Bạn mới bắt đầu làm quen với Linux và cần một trình soạn thảo mạnh mẽ, gọn nhẹ để chỉnh sửa các file cấu hình hay viết những dòng script đầu tiên? Trình soạn thảo vi (phát âm là “vee-eye”) chính là công cụ mà mọi quản trị viên hệ thống đều cần biết. Tuy nhiên, vi thường gây khó khăn cho người mới sử dụng do giao diện không trực quan và hệ thống lệnh đa dạng, khác biệt hoàn toàn so với các trình soạn thảo văn bản hiện đại. Nhiều người thậm chí còn “mắc kẹt” và không biết làm cách nào để thoát khỏi nó.
Đừng lo lắng, bảng cheat vi này sẽ là người bạn đồng hành đáng tin cậy của bạn. Chúng tôi đã tổng hợp mọi thứ bạn cần, từ các lệnh cơ bản, phím tắt hữu ích cho đến những thủ thuật nâng cao để bạn có thể làm chủ công cụ này một cách nhanh chóng và hiệu quả. Bài viết sẽ hướng dẫn bạn từ cách mở và thoát file, làm quen với các chế độ làm việc, di chuyển và chỉnh sửa văn bản, cho đến các ví dụ thực tế và mẹo tùy chỉnh để tối ưu hóa công việc. Hãy cùng AZWEB khám phá sức mạnh của vi ngay bây giờ!

Các lệnh cơ bản trong vi
Để bắt đầu hành trình chinh phục vi, điều đầu tiên bạn cần nắm vững là các lệnh cơ bản để mở, đóng file và hiểu rõ các chế độ làm việc của nó. Đây là nền tảng vững chắc giúp bạn không bị bối rối khi lần đầu tiếp xúc với giao diện đặc biệt này.
Cách mở và thoát khỏi vi
Mở một file bằng vi rất đơn giản. Bạn chỉ cần mở terminal và gõ lệnh theo cú pháp vi [tên_file]. Nếu file đã tồn tại, vi sẽ mở nội dung của file đó. Nếu file chưa tồn tồn tại, vi sẽ tạo một file mới với tên bạn đã chỉ định.
Ví dụ, để mở file config.txt, bạn dùng lệnh:vi config.txt
Tuy nhiên, việc thoát khỏi vi lại là thử thách lớn với người mới. Để thoát, bạn cần ở chế độ Normal (nhấn phìnm Esc vài lần để chắc chắn). Sau đó, gõ một trong các lệnh sau và nhấn Enter:
:q(quit): Thoát khỏi vi nếu bạn chưa thay đổi gì trong file.:q!(quit without saving): Thoát khỏi vi và hủy bỏ mọi thay đổi bạn đã thực hiện. Đây là “lối thoát hiểm” khi bạn không muốn lưu lại những gì vừa chỉnh sửa.:wq(write and quit): Lưu tất cả các thay đổi vào file và sau đó thoát khỏi vi. Đây là lệnh bạn sẽ sử dụng thường xuyên nhất.:xhoặcZZ(trong chế độ Normal): Một cách khác để lưu và thoát, tương tự như:wq.
![]()
Các chế độ làm việc trong vi
Vi có ba chế độ làm việc chính, và việc hiểu rõ chúng là chìa khóa để sử dụng hiệu quả. Sự khác biệt giữa các chế độ này thường gây nhầm lẫn cho người mới bắt đầu.
- Chế độ Normal (Normal Mode): Đây là chế độ mặc định khi bạn vừa mở vi. Ở chế độ này, các phím bạn gõ không dùng để chèn văn bản mà được hiểu là các lệnh. Bạn sẽ dùng chế độ này để di chuyển con trỏ, xóa, sao chép, dán văn bản và chuyển sang các chế độ khác. Luôn nhấn phím
Escđể quay về chế độ Normal từ bất kỳ chế độ nào khác. - Chế độ Chèn (Insert Mode): Khi ở chế độ này, bạn có thể nhập và chỉnh sửa văn bản như trong một trình soạn thảo thông thường. Để vào chế độ Insert từ chế độ Normal, bạn có thể dùng một trong các phím sau:
i: Chèn văn bản ngay trước vị trí con trỏ.a: Chèn văn bản ngay sau vị trí con trỏ.o: Tạo một dòng mới bên dưới dòng hiện tại và bắt đầu chèn văn bản.O: Tạo một dòng mới bên trên dòng hiện tại và bắt đầu chèn văn bản.
- Chế độ Dòng lệnh (Command-line Mode): Chế độ này cho phép bạn thực hiện các lệnh phức tạp hơn như lưu file, thoát, tìm kiếm, thay thế và nhiều tác vụ khác. Để vào chế độ này, từ chế độ Normal, bạn gõ dấu hai chấm
:. Con trỏ sẽ di chuyển xuống góc dưới cùng bên trái của màn hình, sẵn sàng để bạn nhập lệnh.
Việc chuyển đổi linh hoạt giữa ba chế độ này sẽ giúp bạn tận dụng tối đa sức mạnh của vi. Hãy nhớ rằng, Esc luôn là phím đưa bạn trở về “trung tâm chỉ huy” – chế độ Normal.

Phím tắt hữu ích để thao tác nhanh với vi
Khi đã quen với các chế độ làm việc, bước tiếp theo là làm chủ các phím tắt. Triết lý của vi là giữ tay bạn luôn trên hàng phím cơ sở để tăng tốc độ thao tác. Việc sử dụng thành thạo phím tắt sẽ giúp bạn chỉnh sửa văn bản nhanh hơn rất nhiều so với dùng chuột.
Phím tắt di chuyển con trỏ
Thay vì dùng các phím mũi tên, vi khuyến khích bạn di chuyển bằng các phím trên hàng cơ sở để không phải rời tay khỏi vị trí gõ phím chính.
- Di chuyển cơ bản:
h: Di chuyển sang trái một ký tự.j: Di chuyển xuống một dòng.k: Di chuyển lên một dòng.l: Di chuyển sang phải một ký tự.
- Di chuyển theo từ:
w: Di chuyển đến đầu từ tiếp theo.b: Di chuyển về đầu từ phía trước.e: Di chuyển đến cuối từ hiện tại hoặc từ tiếp theo.
- Di chuyển trên dòng:
0(số không): Di chuyển đến đầu dòng.^: Di chuyển đến ký tự đầu tiên không phải khoảng trắng của dòng.$: Di chuyển đến cuối dòng.
- Di chuyển theo trang:
gg: Di chuyển đến đầu file.G: Di chuyển đến cuối file.[số]G: Di chuyển đến dòng có số thứ tự tương ứng (ví dụ,15Gsẽ nhảy đến dòng 15).Ctrl + f(forward): Cuộn xuống một trang.Ctrl + b(backward): Cuộn lên một trang.
Phím tắt chỉnh sửa và thao tác trên dòng
Đây là những lệnh bạn sẽ sử dụng hàng ngày để chỉnh sửa nội dung file. Tất cả các lệnh này đều được thực hiện ở chế độ Normal.
- Xóa văn bản:
x: Xóa ký tự ngay tại vị trí con trỏ.dw: Xóa từ vị trí con trỏ đến hết từ đó.dd: Xóa toàn bộ dòng hiện tại. Dòng bị xóa sẽ được lưu vào bộ nhớ đệm, bạn có thể dán nó ra ở vị trí khác.d$: Xóa từ vị trí con trỏ đến cuối dòng.5dd: Xóa 5 dòng liên tiếp bắt đầu từ dòng hiện tại.
- Chèn và thay thế:
i: Chuyển sang chế độ Insert để chèn trước con trỏ.a: Chuyển sang chế độ Insert để chèn sau con trỏ.r: Thay thế một ký tự duy nhất tại vị trí con trỏ (không cần vào chế độ Insert). Ví dụ,rasẽ thay thế ký tự hiện tại bằng chữ ‘a’.R: Vào chế độ Replace, cho phép bạn gõ đè lên văn bản hiện có cho đến khi nhấnEsc.cw: Thay đổi một từ (xóa từ hiện tại và chuyển sang chế độ Insert).
- Sao chép và dán (Yank and Put):
yy: Sao chép (yank) toàn bộ dòng hiện tại.yw: Sao chép một từ.3yy: Sao chép 3 dòng liên tiếp.p: Dán (put) nội dung đã sao chép hoặc xóa vào sau vị trí con trỏ.P: Dán nội dung vào trước vị trí con trỏ.
Luyện tập các phím tắt này sẽ giúp bạn hình thành “trí nhớ cơ bắp”, từ đó thao tác trong vi một cách tự nhiên và nhanh chóng.
Ví dụ thực tế khi sử dụng các lệnh vi
Lý thuyết sẽ trở nên dễ hiểu hơn khi được áp dụng vào thực tế. Hãy cùng xem qua một vài kịch bản phổ biến mà bạn sẽ gặp phải khi làm việc với vi trên hệ thống Linux.
![]()
Soạn thảo và sửa lỗi nhanh trong file cấu hình
Hãy tưởng tượng bạn là một quản trị viên hệ thống và cần thay đổi cổng SSH mặc định để tăng cường bảo mật. File cấu hình cần sửa là /etc/ssh/sshd_config.
- Mở file: Vì đây là file hệ thống, bạn cần quyền quản trị. Hãy dùng lệnh:
sudo vi /etc/ssh/sshd_config - Tìm kiếm dòng cần sửa: Sau khi file được mở, bạn đang ở chế độ Normal. Để tìm dòng chứa cấu hình cổng, bạn gõ
/và sau đó nhập từ khóa tìm kiếm./Port
Nhấn Enter, con trỏ sẽ nhảy đến dòng đầu tiên có chứa từ “Port”. Nếu đó chưa phải dòng bạn cần, hãy nhấnn(next) để đi đến kết quả tiếp theo. - Chỉnh sửa: Giả sử bạn tìm thấy dòng
#Port 22. Đầu tiên, bạn cần bỏ dấu#để kích hoạt cấu hình. Di chuyển con trỏ đến dấu#và nhấnxđể xóa nó. Tiếp theo, di chuyển con trỏ đến số22. Để thay đổi nó, bạn có thể dùng lệnhcw(change word) để xóa22và chuyển sang chế độ Insert. Bây giờ, gõ cổng mới, ví dụ2222. - Lưu và thoát: Sau khi chỉnh sửa xong, nhấn
Escđể quay về chế độ Normal. Gõ:wqvà nhấn Enter để lưu các thay đổi và thoát khỏi vi.
Vậy là bạn đã hoàn tất việc thay đổi cấu hình một cách nhanh chóng chỉ bằng vài thao tác bàn phím.
Thao tác với nhiều dòng và khối văn bản
Vi rất mạnh mẽ khi xử lý các khối văn bản lớn. Giả sử bạn đang chỉnh sửa một file log và muốn sao chép một đoạn thông báo lỗi gồm 10 dòng.
- Di chuyển đến dòng bắt đầu: Dùng các phím di chuyển (
j,k,G) để đến dòng đầu tiên của khối văn bản bạn muốn sao chép. - Sao chép nhiều dòng: Ở chế độ Normal, gõ lệnh
10yy. Lệnh này có nghĩa là “sao chép (yank) 10 dòng” bắt đầu từ dòng hiện tại. - Di chuyển đến vị trí cần dán: Di chuyển con trỏ đến nơi bạn muốn dán khối văn bản này.
- Dán văn bản: Nhấn phím
pđể dán 10 dòng vừa sao chép vào ngay bên dưới dòng hiện tại.
Bây giờ, hãy thử một ví dụ khác: tìm kiếm và thay thế. Bạn muốn thay thế tất cả các lần xuất hiện của từ “Error” thành “Warning” trong toàn bộ file.
- Vào chế độ Dòng lệnh: Từ chế độ Normal, gõ
:. - Nhập lệnh thay thế: Sử dụng cú pháp
:%s/từ_cũ/từ_mới/g.:%s/Error/Warning/g%: Áp dụng cho toàn bộ file.s: Viết tắt của “substitute” (thay thế).g: Viết tắt của “global”, nghĩa là thay thế tất cả các lần xuất hiện trên cùng một dòng, không chỉ lần đầu tiên.
Nhấn Enter, và vi sẽ tự động thực hiện việc thay thế trên toàn bộ tài liệu. Thật nhanh chóng và tiện lợi phải không?

Mẹo và thủ thuật giúp tăng hiệu quả chỉnh sửa file trên vi
Khi đã nắm vững các thao tác cơ bản, bạn có thể nâng cao kỹ năng của mình với những mẹo và thủ thuật sau đây. Chúng sẽ giúp bạn làm việc nhanh hơn và biến vi thành một công cụ được cá nhân hóa theo phong cách của bạn.
Sử dụng tìm kiếm nâng cao và lệnh thay thế nhanh
Tìm kiếm và thay thế là hai trong số những tính năng mạnh mẽ nhất của vi.
- Cú pháp tìm kiếm:
/từ_khóa: Tìm kiếmtừ_khóatừ vị trí hiện tại xuống cuối file.?từ_khóa: Tìm kiếmtừ_khóatừ vị trí hiện tại ngược lên đầu file.- Sau khi tìm kiếm, sử dụng
nđể đi tới kết quả tiếp theo vàNđể quay lại kết quả trước đó.
- Tìm kiếm không phân biệt chữ hoa/thường: Để vi bỏ qua việc phân biệt chữ hoa và chữ thường khi tìm kiếm, bạn có thể gõ lệnh
:set ic(ignore case) trong chế độ Dòng lệnh. Để bật lại, dùng:set noic. - Lệnh thay thế có xác nhận: Khi bạn muốn thay thế trên toàn bộ file nhưng lại muốn kiểm tra từng trường hợp trước khi thay đổi, hãy thêm cờ
c(confirm) vào cuối lệnh.:%s/database_user/admin_user/gc
Với mỗi lần tìm thấy, vi sẽ dừng lại và hỏi bạn replace with admin_user (y/n/a/q/l/^E/^Y)?. Bạn có thể chọny(yes),n(no),a(all – thay thế tất cả các trường hợp còn lại), hoặcq(quit).
Tùy chỉnh vi để cá nhân hóa trình soạn thảo
Bạn có thể tùy chỉnh vi để nó hoạt động theo ý muốn bằng cách sử dụng file cấu hình .vimrc. Mặc dù tên là vimrc, nó cũng hoạt động cho hầu hết các phiên bản vi hiện đại.
- Tạo và chỉnh sửa file
.vimrc: File này nằm ở thư mục chính của người dùng. Hãy mở nó bằng vi:vi ~/.vimrc - Thêm các tùy chỉnh phổ biến: Dưới đây là một vài thiết lập hữu ích bạn có thể thêm vào file
.vimrccủa mình. Mỗi thiết lập nên nằm trên một dòng riêng.set number: Hiển thị số dòng ở bên trái màn hình.syntax on: Bật tính năng tô màu cú pháp, giúp đọc code và file cấu hình dễ dàng hơn.set tabstop=4: Thiết lập độ rộng của một phím Tab là 4 khoảng trắng.set autoindent: Tự động căn lề dòng mới dựa trên dòng trước đó.set showmatch: Khi bạn gõ một dấu ngoặc đóng (như)hoặc}), vi sẽ nhấp nháy đến dấu ngoặc mở tương ứng.
- Lưu và tải lại: Sau khi thêm các tùy chỉnh, hãy lưu file và thoát (
:wq). Các thay đổi sẽ có hiệu lực từ lần mở vi tiếp theo.
Bằng cách tùy chỉnh .vimrc, bạn đang biến vi thành một môi trường làm việc được “đo ni đóng giày” cho riêng mình, giúp tăng năng suất và sự thoải mái khi làm việc.

Các vấn đề thường gặp khi sử dụng vi
Mặc dù rất mạnh mẽ, vi cũng có thể gây ra một số tình huống khó xử cho người dùng mới. Dưới đây là hai vấn đề phổ biến nhất và cách giải quyết chúng một cách nhanh gọn.
Không thoát được trình soạn thảo vi
Đây có lẽ là “cơn ác mộng” kinh điển của những người mới học Linux. Bạn loay hoay gõ :q, :wq nhưng không có gì xảy ra, hoặc màn hình hiển thị những ký tự lạ.
- Nguyên nhân: Lý do phổ biến nhất là bạn không ở trong chế độ Normal. Rất có thể bạn vẫn đang ở chế độ Insert hoặc một chế độ nào đó khác. Khi đó, việc gõ
:sẽ chỉ chèn ký tự hai chấm vào văn bản thay vì kích hoạt chế độ Dòng lệnh. - Cách xử lý:
- Bình tĩnh và nhấn
Esc: Nhấn phímEscmột hoặc hai lần. Thao tác này sẽ đảm bảo bạn quay trở lại chế độ Normal, bất kể bạn đang ở đâu. - Thử lại lệnh thoát: Bây giờ, hãy thử gõ lại lệnh thoát mà bạn muốn, ví dụ
:q!(thoát không lưu) hoặc:wq(lưu và thoát). - Kiểm tra góc dưới màn hình: Nếu bạn thấy thông báo lỗi như
E37: No write since last change (add ! to override), điều này có nghĩa là bạn đã thay đổi file nhưng đang cố thoát bằng:q. Vi đang cảnh báo bạn rằng có những thay đổi chưa được lưu. Lúc này, bạn có hai lựa chọn: lưu thay đổi bằng:wqhoặc hủy thay đổi bằng:q!.
- Bình tĩnh và nhấn
Luôn nhớ rằng Esc là chiếc chìa khóa vạn năng để đưa bạn về trạng thái an toàn (chế độ Normal) trước khi thực hiện bất kỳ lệnh nào.
Lỗi khi lưu file hoặc chỉnh sửa không thành công
Đôi khi, bạn đã chỉnh sửa xong nhưng khi gõ :wq, bạn lại nhận được một thông báo lỗi như “Permission denied” hoặc “File is read-only”.
- Nguyên nhân và cách xử lý:
- Lỗi quyền truy cập (Permission denied): Điều này xảy ra khi bạn không có quyền ghi vào file. Thường là các file hệ thống trong thư mục
/etchoặc/var.- Giải pháp 1: Nếu bạn quên dùng
sudokhi mở file, bạn có thể lưu file một cách “cưỡng bức” bằng lệnh:w !sudo tee %. Lệnh này sẽ yêu cầu bạn nhập mật khẩu sudo và ghi nội dung hiện tại vào file. Sau đó bạn có thể thoát bằng:q!. - Giải pháp 2: Cách đơn giản hơn là thoát bằng
:q!(không lưu), sau đó mở lại file với quyền sudo:sudo vi [tên_file].
- Giải pháp 1: Nếu bạn quên dùng
- Chế độ chỉ đọc (Read-only): File có thể đã được mở ở chế độ chỉ đọc (ví dụ, bằng lệnh
viewthay vìvi) hoặc thuộc tính của file được đặt là chỉ đọc.- Giải pháp: Bạn có thể thử ghi đè bằng lệnh
:w!. Nếu vẫn không thành công do quyền của hệ thống file, bạn sẽ cần thoát ra và thay đổi quyền của file bằng lệnhchmodtrước khi chỉnh sửa lại.
- Giải pháp: Bạn có thể thử ghi đè bằng lệnh
- Lỗi quyền truy cập (Permission denied): Điều này xảy ra khi bạn không có quyền ghi vào file. Thường là các file hệ thống trong thư mục
Hiểu rõ nguyên nhân của các lỗi này sẽ giúp bạn xử lý tình huống một cách chuyên nghiệp thay vì hoảng sợ.

Best Practices
Để thực sự thành thạo vi và biến nó thành một công cụ đắc lực, việc tuân thủ một vài nguyên tắc thực hành tốt nhất là rất quan trọng. Những thói quen này sẽ giúp bạn làm việc hiệu quả và tránh được các lỗi không đáng có.
Thường xuyên luyện tập các lệnh cơ bản để nâng cao tốc độ:
Sức mạnh của vi nằm ở “trí nhớ cơ bắp”. Thay vì suy nghĩ về từng lệnh, hãy luyện tập cho đến khi các thao tác di chuyển (h, j, k, l), xóa (dd), sao chép (yy), và dán (p) trở thành phản xạ. Dành ra 5-10 phút mỗi ngày để thực hành chỉnh sửa một file văn bản bất kỳ, bạn sẽ thấy tốc độ của mình cải thiện đáng kể.
Luôn sử dụng chế độ Normal để di chuyển và chỉnh sửa nhanh:
Một sai lầm phổ biến của người mới là ở trong chế độ Insert quá lâu và dùng các phím mũi tên để di chuyển. Hãy tập thói quen: vào chế độ Insert, gõ văn bản, rồi ngay lập tức nhấn Esc để quay về chế độ Normal. Chế độ Normal mới là “trung tâm điều khiển” thực sự, nơi bạn thực hiện các lệnh chỉnh sửa mạnh mẽ. Bạn nên dành phần lớn thời gian trong chế độ này.
Đừng ngại sử dụng bảng cheat và tài liệu tham khảo:
Không ai có thể nhớ hết tất cả các lệnh của vi ngay từ đầu. Hãy giữ bảng cheat này (hoặc một tài liệu tham khảo khác) ở bên cạnh. Khi bạn gặp một tác vụ lặp đi lặp lại, hãy tự hỏi: “Liệu có cách nào nhanh hơn trong vi không?”. Sau đó, hãy tra cứu và học lệnh mới. Dần dần, vốn từ vựng lệnh của bạn sẽ ngày càng phong phú.
Tránh thoát bằng cách đột ngột, hãy lưu file trước khi thoát:
Việc đột ngột đóng cửa sổ terminal mà không lưu file là một cách chắc chắn để mất dữ liệu. Hãy tạo thói quen tốt là luôn sử dụng :wq hoặc :x để đảm bảo mọi thay đổi của bạn đã được ghi lại một cách an toàn. Nếu bạn không chắc chắn về những thay đổi mình đã tạo, hãy dùng :q! để thoát và kiểm tra lại từ đầu. Cẩn thận luôn tốt hơn là hối tiếc.

Kết luận
Qua hướng dẫn chi tiết này, hy vọng bạn đã thấy rằng trình soạn thảo vi không hề đáng sợ như lời đồn. Thực chất, vi là một công cụ cực kỳ mạnh mẽ, hiệu quả và có mặt trên hầu hết mọi hệ thống Linux. Mặc dù ban đầu có thể hơi khó làm quen, nhưng một khi bạn đã vượt qua được rào cản ban đầu, bạn sẽ nhận ra tốc độ và sự linh hoạt mà nó mang lại là vô giá, đặc biệt khi làm việc hoàn toàn qua giao diện dòng lệnh.
Những điểm chính cần nhớ là: vi hoạt động dựa trên các chế độ (Normal, Insert, Command-line), và chìa khóa để thành thạo là luyện tập các phím tắt cho đến khi chúng trở thành phản xạ tự nhiên. Bảng cheat vi này chính là người bạn đồng hành, giúp bạn tiết kiệm thời gian tra cứu và thao tác chính xác hơn trong quá trình học hỏi. Đừng để những khó khăn ban đầu làm bạn nản lòng.
Hãy bắt đầu sử dụng vi ngay hôm nay cho các công việc chỉnh sửa file hàng ngày của bạn. Càng thực hành nhiều, bạn sẽ càng cảm thấy tự tin. Bước tiếp theo trên hành trình của bạn có thể là tìm hiểu sâu hơn về Vim (Vi IMproved) – một phiên bản cải tiến của vi với nhiều tính năng nâng cao như hệ thống plugin phong phú, chia màn hình, và các macro phức tạp để tự động hóa công việc của bạn. Chúc bạn thành công