Khi bước chân vào thế giới Linux, một trong những công cụ đầu tiên bạn cần làm quen chính là trình soạn thảo văn bản. Vi, hay phiên bản cải tiến của nó là Vim, là một trình soạn thảo văn bản dựa trên giao diện dòng lệnh (CLI) cực kỳ phổ biến và mạnh mẽ. Đây là công cụ mặc định trên hầu hết các hệ thống Unix-like. Bạn có bao giờ cảm thấy bối rối khi lần đầu mở một file và không biết làm thế nào để gõ chữ hay thoát ra? Đó là cảm giác chung của rất nhiều người mới bắt đầu. Giao diện của vi không giống với các trình soạn thảo đồ họa quen thuộc như Notepad hay Word, điều này tạo ra một rào cản ban đầu. Tuy nhiên, đừng lo lắng. Bài viết này sẽ là kim chỉ nam giúp bạn hiểu rõ về lệnh vi, từ các chế độ làm việc cơ bản đến những câu lệnh thiết yếu, giúp bạn tự tin chỉnh sửa file trực tiếp trên terminal một cách hiệu quả và chuyên nghiệp. Chúng ta sẽ cùng nhau khám phá cấu trúc của vi, các lệnh cơ bản, cách mở, sửa, lưu file, kèm theo các ví dụ minh họa và mẹo vặt hữu ích.

Các chế độ làm việc cơ bản trong vi
Một trong những khái niệm cốt lõi khiến vi khác biệt so với các trình soạn thảo khác chính là “chế độ” (modes). Thay vì luôn ở trạng thái sẵn sàng nhập liệu, vi phân chia các tác vụ thành những chế độ riêng biệt. Hiểu rõ ba chế độ cơ bản này là chìa khóa để bạn làm chủ công cụ mạnh mẽ này.
Chế độ Normal (Bình thường)
Đây là chế độ mặc định khi bạn vừa mở vi. Ở chế độ Normal, bàn phím của bạn không dùng để gõ văn bản mà hoạt động như một bảng điều khiển. Mỗi phím hoặc tổ hợp phím tương ứng với một lệnh cụ thể. Đây là nơi bạn thực hiện các thao tác điều hướng con trỏ, xóa chữ, xóa dòng, sao chép, dán văn bản và chuyển sang các chế độ khác. Ví dụ, nhấn phím j để di chuyển xuống một dòng, hoặc dd để xóa toàn bộ dòng hiện tại. Hãy tưởng tượng chế độ này như trung tâm chỉ huy, nơi bạn ra lệnh cho trình soạn thảo thực hiện các tác vụ biên tập cấp cao. Hầu hết thời gian làm việc hiệu quả với vi là ở chế độ này, bạn chỉ chuyển sang chế độ Chèn khi cần nhập liệu.

Chế độ Insert (Chèn)
Khi bạn muốn nhập hoặc chỉnh sửa nội dung văn bản, bạn cần chuyển sang chế độ Insert. Từ chế độ Normal, có nhiều cách để vào chế độ này, phổ biến nhất là nhấn phím i (insert). Sau khi nhấn i, con trỏ sẽ cho phép bạn bắt đầu gõ văn bản ngay tại vị trí hiện tại. Ngoài ra, bạn có thể dùng phím a (append) để bắt đầu chèn ký tự sau vị trí con trỏ, hoặc o để mở một dòng mới bên dưới và bắt đầu chèn. Khi ở chế độ Insert, vi hoạt động khá giống với các trình soạn thảo văn bản thông thường. Bạn có thể gõ, xóa bằng phím Backspace như bình thường. Để thoát khỏi chế độ Insert và quay trở lại chế độ Normal, bạn chỉ cần nhấn phím Esc. Việc chuyển đổi linh hoạt giữa hai chế độ Normal và Insert là kỹ năng nền tảng để làm việc hiệu quả với vi.
Chế độ Command-line (Dòng lệnh)
Chế độ Dòng lệnh cho phép bạn thực hiện các tác vụ quản lý file và các lệnh nâng cao khác. Để truy cập chế độ này, từ chế độ Normal, bạn nhấn phím dấu hai chấm :. Một dấu hai chấm sẽ xuất hiện ở góc dưới cùng bên trái màn hình, sẵn sàng nhận lệnh của bạn. Đây là nơi bạn thực hiện các thao tác quan trọng như lưu file (:w), thoát khỏi vi (:q), lưu và thoát cùng lúc (:wq), hoặc thoát mà không lưu thay đổi (:q!). Ngoài ra, chế độ này còn được dùng cho các chức năng mạnh mẽ khác như tìm kiếm và thay thế văn bản trên toàn bộ file, hiển thị số dòng, hay chạy các lệnh shell ngay bên trong vi. Sau khi gõ lệnh và nhấn Enter, vi sẽ thực thi lệnh và thường sẽ quay trở lại chế độ Normal.

Các lệnh thường dùng trong trình soạn thảo vi
Để sử dụng vi một cách hiệu quả, việc nắm vững các lệnh cơ bản là vô cùng quan trọng. Các lệnh này giúp bạn di chuyển nhanh chóng và chỉnh sửa văn bản mà không cần dùng đến chuột, từ đó tăng tốc độ làm việc đáng kể trên môi trường dòng lệnh.
Lệnh di chuyển con trỏ
Trong chế độ Normal, bạn không dùng các phím mũi tên (mặc dù chúng vẫn hoạt động trên nhiều phiên bản hiện đại). Thay vào đó, các lập trình viên chuyên nghiệp thường dùng các phím trên hàng cơ sở để giữ tay không phải di chuyển xa khỏi vị trí gõ phím chính.
h: Di chuyển con trỏ sang trái một ký tự.j: Di chuyển con trỏ xuống một dòng.k: Di chuyển con trỏ lên một dòng.l: Di chuyển con trỏ sang phải một ký tự.
Ngoài ra, còn có các lệnh di chuyển nhanh hơn:
w: Di chuyển đến đầu từ tiếp theo.b: Di chuyển về đầu từ phía trước.0: Di chuyển đến đầu dòng hiện tại.$: Di chuyển đến cuối dòng hiện tại.gg: Di chuyển đến dòng đầu tiên của file.G: Di chuyển đến dòng cuối cùng của file.
Việc luyện tập sử dụng các phím này sẽ giúp thao tác của bạn trở nên nhanh và chính xác hơn rất nhiều.

Lệnh chỉnh sửa cơ bản
Các lệnh chỉnh sửa trong chế độ Normal cho phép bạn thay đổi nội dung file một cách linh hoạt.
- Xóa:
x: Xóa ký tự ngay tại vị trí con trỏ.dd: Xóa toàn bộ dòng hiện tại. Bạn có thể xóa nhiều dòng bằng cách gõ số trước lệnh, ví dụ5ddsẽ xóa 5 dòng.
- Sao chép (Yank):
yy: Sao chép (yank) toàn bộ dòng hiện tại vào bộ nhớ đệm. Tương tựdd, bạn có thể dùng3yyđể sao chép 3 dòng.
- Dán (Paste):
p: Dán nội dung đã sao chép hoặc xóa ngay sau vị trí con trỏ.
- Hoàn tác và làm lại:
u: Hoàn tác (undo) hành động vừa thực hiện.Ctrl + r: Làm lại (redo) hành động đã hoàn tác.
- Tìm kiếm và thay thế:
/từ_khóa: Tìm kiếmtừ_khóatrong văn bản. Nhấnnđể đi đến kết quả tiếp theo.:%s/từ_cũ/từ_mới/g: Tìm và thay thế tất cảtừ_cũbằngtừ_mớitrong toàn bộ file.
Nắm vững các lệnh này sẽ giúp bạn biên tập văn bản trên Linux hiệu quả như một chuyên gia.
Cách mở, chỉnh sửa, lưu và thoát file với vi
Quy trình làm việc cơ bản với vi bao gồm bốn bước chính: mở file, chỉnh sửa nội dung, lưu các thay đổi và cuối cùng là thoát khỏi trình soạn thảo. Việc thực hiện thành thạo chu trình này là nền tảng để bạn có thể quản lý file cấu hình, viết script hay soạn thảo bất kỳ văn bản nào trên hệ thống Linux.
Mở file bằng vi
Để bắt đầu, bạn cần mở terminal và sử dụng lệnh vi theo sau là tên file bạn muốn tạo hoặc chỉnh sửa. Cú pháp rất đơn giản:vi tên_file
Ví dụ, để tạo một file mới có tên là ghichep.txt hoặc mở nó nếu đã tồn tại, bạn gõ:vi ghichep.txt
Sau khi nhấn Enter, màn hình terminal sẽ chuyển sang giao diện của vi. Nếu là file mới, bạn sẽ thấy một màn hình trống với các ký tự ~ ở đầu mỗi dòng, biểu thị các dòng trống. Nếu file đã tồn tại, nội dung của nó sẽ được hiển thị và bạn sẽ ở trong chế độ Normal, sẵn sàng để bắt đầu điều hướng hoặc ra lệnh.

Các thao tác chỉnh sửa, lưu và thoát file
Khi đã mở file và đang ở chế độ Normal, bạn có thể bắt đầu quy trình làm việc:
- Chuyển sang chế độ Chèn (Insert Mode): Nhấn phím
iđể bắt đầu nhập văn bản. Bây giờ bạn có thể gõ nội dung mong muốn. - Trở về chế độ Normal: Sau khi chỉnh sửa xong, nhấn phím
Escđể thoát khỏi chế độ Chèn và quay lại chế độ Normal. Đây là bước bắt buộc trước khi bạn có thể lưu hoặc thoát. - Lưu file: Từ chế độ Normal, gõ
:để vào chế độ Dòng lệnh. Sau đó gõw(viết tắt của write) và nhấnEnter. Lệnh:wsẽ lưu các thay đổi vào file nhưng vẫn giữ bạn ở trong trình soạn thảo vi. - Lưu và thoát: Để tiết kiệm thời gian, bạn có thể kết hợp lệnh lưu và thoát. Gõ
:wqvà nhấnEnter. Lệnh này sẽ ghi các thay đổi vào file và đóng trình soạn thảo. - Thoát không lưu: Nếu bạn muốn hủy bỏ tất cả các thay đổi vừa thực hiện và thoát, hãy gõ
:q!và nhấnEnter. Dấu chấm than!là để ép buộc vi thoát mà không cảnh báo về các thay đổi chưa được lưu.
Nắm rõ chu trình này sẽ giúp bạn làm việc với vi một cách tự tin và không còn lo lắng về việc bị “mắc kẹt”.

Ví dụ minh họa thao tác trên vi
Lý thuyết sẽ dễ hiểu hơn rất nhiều khi đi kèm với thực hành. Hãy cùng đi qua hai ví dụ cụ thể để hình dung rõ hơn về quy trình làm việc với trình soạn thảo vi trong các tình huống thực tế.
Sửa một đoạn văn bản đơn giản
Giả sử bạn cần tạo một file ghi chú đơn giản tên là plan.txt và nhập vào kế hoạch cho ngày mai.
- Mở file: Mở terminal và gõ lệnh:
vi plan.txt. - Vào chế độ Chèn: Màn hình vi hiện ra, bạn đang ở chế độ Normal. Nhấn phím
iđể chuyển sang chế độ Chèn. - Nhập nội dung: Gõ nội dung kế hoạch của bạn, ví dụ:
- Hoan thanh bao cao cong viec.
- Hop nhom luc 14:00.
- Kiem tra email va phan hoi.
- Sửa lỗi chính tả: Bạn nhận ra mình gõ sai từ “Hoan thanh”. Bạn cần sửa thành “Hoan thanh”. Nhấn
Escđể quay về chế độ Normal. Dùng các phímh, j, k, lđể di chuyển con trỏ đến chữ “a” trong “Hoan”. Nhấnxđể xóa chữ “a”. Nhấniđể vào lại chế độ Chèn, gõ “à”, rồi nhấnEsclần nữa. - Lưu và thoát: Bây giờ file đã hoàn chỉnh. Từ chế độ Normal, gõ
:wqvà nhấnEnter. Vi sẽ lưu nội dung và thoát ra, trả bạn về lại terminal.

Tìm kiếm và thay thế từ khóa trong file
Hãy tưởng tượng bạn có một file cấu hình config.conf và bạn cần thay đổi địa chỉ IP cũ 192.168.1.10 thành địa chỉ mới 192.168.1.20 ở mọi nơi trong file.
- Mở file: Gõ lệnh
vi config.conf. - Tìm kiếm: Để xem có bao nhiêu chỗ cần thay đổi, từ chế độ Normal, gõ
/192.168.1.10và nhấnEnter. Vi sẽ tô sáng kết quả tìm thấy đầu tiên. Bạn có thể nhấnnđể đi đến các kết quả tiếp theo. - Thay thế tất cả: Để thay thế tất cả các vý hiện của địa chỉ IP cũ, bạn sử dụng lệnh thay thế trong chế độ Command-line. Từ chế độ Normal, gõ lệnh sau và nhấn
Enter::%s/192.168.1.10/192.168.1.20/g:: Bắt đầu chế độ Dòng lệnh.%: Áp dụng cho toàn bộ file.s: Viết tắt của substitute (thay thế)./cũ/mới/: Cú pháp thay thế.g: Global, nghĩa là thay thế tất cả các vý hiện trên cùng một dòng, không chỉ vý hiện đầu tiên.
- Lưu và thoát: Sau khi lệnh được thực thi, tất cả các địa chỉ IP cũ đã được cập nhật. Bạn chỉ cần gõ
:wqđể lưu thay đổi và thoát.
Qua hai ví dụ này, bạn có thể thấy sức mạnh và tính hiệu quả của vi trong việc xử lý văn bản trực tiếp trên server.

Các vấn đề thường gặp và cách khắc phục
Dù vi là một công cụ mạnh mẽ, người mới bắt đầu thường gặp phải một số khó khăn phổ biến. Hiểu rõ nguyên nhân và cách giải quyết sẽ giúp bạn vượt qua những trở ngại này một cách dễ dàng.
Không thoát được vi do nhầm lệnh
Đây có lẽ là vấn đề kinh điển nhất mà hầu hết người dùng mới đều trải qua. Cảm giác “bị kẹt” trong vi xảy ra khi bạn đang ở chế độ Chèn (Insert) và cố gắng gõ các lệnh như :wq nhưng chúng lại được hiểu là văn bản thông thường. Hoặc bạn đang ở một chế độ lạ nào đó mà không biết.
Cách khắc phục:
- Luôn quay về chế độ Normal: Nguyên tắc vàng là “Khi không chắc, hãy nhấn
Esc“. Nhấn phímEscmột hoặc hai lần sẽ đảm bảo bạn quay trở lại chế độ Normal, là nơi duy nhất bạn có thể thực hiện các lệnh lưu và thoát. - Sử dụng đúng lệnh thoát:
:q: Thoát nếu file không có thay đổi.:q!: Thoát và hủy bỏ mọi thay đổi chưa lưu. Đây là lối thoát hiểm an toàn nhất khi bạn không chắc mình đã làm gì và chỉ muốn thoát ra.:wq: Lưu và thoát.ZZ(nhấn Shift + Z hai lần) từ chế độ Normal cũng là một cách nhanh để lưu và thoát.
Nếu bạn thấy các ký tự lạ xuất hiện khi cố gõ lệnh, rất có thể bạn chưa ở chế độ Normal. Hãy nhấn Esc và thử lại.
Lỗi khi mở file hoặc không có quyền chỉnh sửa
Đôi khi, bạn mở một file và có thể đọc nhưng không thể lưu các thay đổi. Terminal thường sẽ hiển thị thông báo như “Read-only file” hoặc “Permission denied” khi bạn cố gắng lưu.
Nguyên nhân:
- Không đủ quyền: File bạn đang cố chỉnh sửa thuộc về một người dùng khác (ví dụ như
root) và tài khoản của bạn không có quyền ghi (write permission) lên file đó. Điều này thường xảy ra với các file cấu hình hệ thống. - Hệ thống file chỉ đọc: File nằm trên một hệ thống file được gắn (mount) ở chế độ chỉ đọc.
Cách khắc phục:
- Kiểm tra quyền: Trước khi mở file, bạn có thể dùng lệnh
ls -l tên_fileđể xem quyền của file. - Sử dụng
sudo: Nếu đó là file hệ thống và bạn có quyền quản trị, hãy mở file vớisudo:sudo vi /etc/hostname
Lệnhsudosẽ thực thi lệnhvivới quyền của người dùngroot, cho phép bạn chỉnh sửa và lưu file. - Lưu file với quyền
sudokhi đã lỡ mở: Nếu bạn đã chỉnh sửa rất nhiều mà quên không dùngsudotừ đầu, đừng lo lắng. Bạn có thể lưu file bằng cách dùng lệnh sau trong vi::w !sudo tee %
Lệnh này sẽ ghi nội dung buffer hiện tại vào file bằng lệnhteevới quyềnsudo, sau đó bạn có thể thoát bằng:q!.

Lời khuyên và mẹo sử dụng hiệu quả trình soạn thảo vi
Việc học vi không chỉ dừng lại ở việc biết các lệnh cơ bản. Để thực sự trở nên thành thạo và biến nó thành một công cụ làm việc hiệu quả, bạn có thể áp dụng những lời khuyên và mẹo sau đây trong quá trình sử dụng hàng ngày.
- Thường xuyên luyện tập các tổ hợp lệnh: Sức mạnh của vi nằm ở khả năng kết hợp các lệnh. Ví dụ,
dlà lệnh xóa vàwlà di chuyển đến từ tiếp theo, vậydwsẽ xóa từ hiện tại. Tương tự,clà thay đổi (change),cwsẽ xóa từ hiện tại và đưa bạn vào chế độ Chèn để gõ từ mới. Hãy thử nghiệm và tạo ra các chuỗi lệnh riêng để tối ưu hóa công việc của mình. - Sử dụng bản vi cải tiến như vim: Hầu hết các hệ thống Linux hiện đại ngày nay đều cài đặt sẵn
vim(Vi IMproved) thay vìvigốc. Vim cung cấp rất nhiều tính năng vượt trội như tô màu cú pháp (syntax highlighting), tìm kiếm thông minh hơn, hệ thống plugin mở rộng và nhiều tùy chỉnh cá nhân hóa. Nếu bạn đang học vi, hãy học thẳng vim để tận dụng những lợi ích này. - Tận dụng chế độ command-line để tự động hóa: Đừng chỉ dùng chế độ dòng lệnh để lưu và thoát. Bạn có thể thực hiện các tác vụ phức tạp như sắp xếp các dòng (
:sort), xóa các dòng trùng lặp, hoặc thực thi một macro để tự động hóa các thao tác lặp đi lặp lại. - Luôn sao lưu file trước khi chỉnh sửa quan trọng: Đây là một nguyên tắc an toàn chung nhưng đặc biệt quan trọng khi bạn mới làm quen với vi. Trước khi thực hiện các thay đổi lớn trên một file cấu hình hệ thống, hãy tạo một bản sao lưu bằng lệnh
cp config.conf config.conf.bak. Điều này sẽ cứu bạn khỏi những sai lầm không đáng có. - Không chỉnh sửa trực tiếp file hệ thống nếu chưa chắc chắn: Khi làm việc với các file trong
/etchoặc các thư mục hệ thống khác, hãy luôn chắc chắn rằng bạn hiểu rõ mình đang làm gì. Một thay đổi sai lầm có thể khiến hệ thống của bạn không khởi động được. Hãy đọc tài liệu và tìm hiểu kỹ trước khi chỉnh sửa.

Kết luận
Qua bài viết này, chúng ta đã cùng nhau khám phá những khía cạnh cơ bản nhưng vô cùng quan trọng của trình soạn thảo vi trong môi trường Linux. Từ việc tìm hiểu sự khác biệt giữa các chế độ làm việc như Normal, Insert và Command-line, cho đến việc nắm vững các câu lệnh di chuyển, chỉnh sửa, lưu và thoát file. Vi không còn là một công cụ khó hiểu và đáng sợ, mà đã trở thành một trợ thủ đắc lực có thể giúp bạn tăng tốc độ làm việc đáng kể trên terminal. Việc sử dụng thành thạo các lệnh cơ bản không chỉ giúp bạn chỉnh sửa file nhanh hơn mà còn mang lại cảm giác kiểm soát hoàn toàn hệ thống của mình mà không cần đến giao diện đồ họa.
Tất nhiên, để thực sự làm chủ được vi, không có con đường nào khác ngoài việc luyện tập thường xuyên. Hãy bắt đầu bằng cách sử dụng vi cho các tác vụ hàng ngày, từ việc viết một script đơn giản, chỉnh sửa file cấu hình cho đến việc ghi chú nhanh. Mỗi lần sử dụng là một cơ hội để bạn củng cố kiến thức và khám phá thêm những tính năng mới. AZWEB hy vọng rằng bài hướng dẫn này sẽ là nền tảng vững chắc để bạn tự tin áp dụng vi vào công việc quản trị hệ thống hay lập trình hàng ngày, mở ra một cánh cửa mới trong hành trình chinh phục Linux của bạn.