
Vim là gì? Chế độ soạn thảo và phím tắt cho lập trình viên
Vim là trình soạn thảo văn bản chạy trong terminal, nổi tiếng với các chế độ Normal, Insert, Visual cùng hệ thống phím tắt giúp thao tác nhanh hơn cả thao tác chuột. Tên đầy đủ là Vi IMproved, phiên bản đầu tiên do Bram Moolenaar bắt đầu viết vào năm 1988 dựa trên mã nguồn trình soạn thảo Stevie, và bản phát hành công khai đầu tiên 1.14 hoàn tất vào tháng 11 năm 1991. Kể từ đó, Vim được chuyển đổi sang hàng trăm môi trường khác nhau và hiện là trình soạn thảo mặc định trên macOS cũng như trong rất nhiều container Linux.

Ba chế độ làm việc cốt lõi
Điều làm Vim khác biệt so với trình soạn thảo quen thuộc là bàn phím được chia thành nhiều chế độ, và mỗi chế độ diễn giải phím gõ theo một ý nghĩa khác nhau. Ba chế độ dùng nhiều nhất là:
- Normal: chế độ mặc định, dùng cho các lệnh chỉnh sửa. Muốn xóa một từ thì gõ
dw, muốn lưu file thì gõ:w. Ở chế độ này các phím chữ cái được hiểu như lệnh chứ không phải ký tự cần nhập. - Insert: chế độ gõ văn bản thuần như Notepad. Bấm phím
iđể chèn trước con trỏ,ađể chèn sau con trỏ,ođể mở một dòng mới bên dưới. NhấnEscđể quay lại Normal. - Visual: chế độ chọn vùng văn bản. Gõ
vđể chọn theo ký tự,Vđể chọn cả dòng,Ctrl-Vđể chọn hình chữ nhật. Sau khi chọn, các lệnh nhưdxóa,ycắt,cthay thế sẽ áp dụng cho vùng đang chọn.
Ngoài ra còn có chế độ dòng lệnh phía dưới để gõ lệnh bắt đầu bằng dấu hai chấm, và chế độ lệnh với : cho phép nhập nhiều lệnh cùng lúc. Toàn bộ tài liệu hướng dẫn nằm ngay trong trình biên tập, truy cập bằng lệnh :help, và bài hướng dẫn cho người mới nằm ở lệnh vimtutor.

So sánh các cách soạn thảo phổ biến
| Công cụ | Giao diện chính | Điểm mạnh | Điểm yếu |
|---|---|---|---|
| Vim | Dòng lệnh, có bản đồ hoạ | Nhẹ, mọi phím ở hàng nhà, tự nhiên chạy qua SSH | Đường cong học khá cao |
| Neovim | Dòng lệnh, có bản đồ hoạ | Cấu hình bằng Lua, hiệu năng tốt hơn, có giao diện đồ họa sẵn | Một số plugin cũ không tương thích |
| Emacs | Dòng lệnh, mở rộng sâu | Cực kỳ tùy biến, quen thuộc cho người dùng Unix lâu năm | Nặng hơn, khái niệm nhiều lớp |
| Trình soạn thảo đồ họa | Cửa sổ và con trỏ chuột | Dễ học, trực quan, hợp người mới | Chậm hơn khi làm việc trên máy chủ từ xa |
Điểm quyết định thường nằm ở môi trường làm việc. Khi bạn phải sửa cấu hình trực tiếp trên máy chủ qua kết nối SSH, một trình soạn thảo chạy trong terminal vẫn hoạt động trơn tru, còn trình soạn thảo đồ họa thường phải mở qua giao diện đồ họa hoặc thiếu bảng phím hợp lệ. Vim cũng hợp với người dùng gõ phím chạm kiểu touch typing, vì phần lớn thao tác nằm ở hàng phím nhà.

Các phím tắt đáng học trước
Nếu mới bắt đầu, chỉ cần nhớ một nhóm phím sau là dùng được phần lớn công việc hằng ngày:
ggvàGnhảy tới đầu và cuối tệp,:42nhảy thẳng tới dòng 42.0và$di chuyển tới đầu dòng và cuối dòng,wvàbnhảy theo từ.ddxóa cả dòng,yysao chép cả dòng,pdán,uhoàn tác,Ctrl-Rlàm lại./từ khóatìm kiếm,nvàNdi chuyển giữa các kết quả.:wlưu,:qthoát,:wqlưu rồi thoát,:q!bỏ qua thay đổi và thoát.Ctrl-Wcắt một từ,Ctrl-Uxóa cả dòng,Ctrl-Anhảy tới đầu dòng.
Hai khái niệm còn lại rất đáng đầu tư thời gian là macro và register. Ghi macro bằng q rồi thực thi bằng @ giúp phát lại một chuỗi thao tác lặp đi lặp lại. Mỗi lần cắt, sao chép hay dán, Vim lưu nội dung vào một register, và có 36 register đánh số cùng chữ cái, nên bạn có thể dán lại nhiều đoạn khác nhau đã cắt trước đó.
Lỗi thường gặp của người mới
- Gõ phím trong Normal mà không ra chữ: đây là hành vi đúng, không phải lỗi. Khi cảm giác nhầm, bấm
Escmột lần là mọi thứ trở lại bình thường. - Không thoát được Vim: nếu đã lỡ sửa file mà muốn bỏ hết thay đổi, gõ
:q!để thoát ngay mà không lưu. Thao tác này không thể hoàn tác, nên cần phân biệt rõ:qvới:q!. - Không biết phím nào làm gì: dùng
:help insertđể xem bảng toàn bộ phím tắt trong từng chế độ, hoặc:mapđể tra cứu các phím tắt tự định nghĩa. - Sao lưu file cũ bị ghi đè: bật
:set backuphoặc dùng plugin undo-tree để có thể lấy lại các phiên bản trước khi sửa.
Cuối cùng, Vim không đi kèm cấu hình sẵn nào. Cấu hình nằm trong tệp .vimrc ở thư mục home, và mọi tùy chọn đều có thể bật bằng lệnh :set rồi lưu vĩnh viễn vào tệp đó. Trang chủ của dự án tại vim.org có tài liệu đầy đủ, còn mã nguồn và phần hướng dẫn cài đặt chi tiết nằm trong kho vim/vim trên GitHub. Nếu muốn nắm bối cảnh lịch sử và các tính năng nâng cao, đọc bài giới thiệu về Vim trên Wikipedia.
