Học sử dụng Vim: Hướng dẫn cơ bản cho lập trình viên mới bắt đầu
Mục lục bài viết
1. Vim là gì và tại sao nên học?
Vim là trình soạn thảo văn bản mạnh mẽ có từ năm 1991, được cài sẵn trên hầu hết hệ thống Linux và macOS. Khác với editor thông thường, Vim hoạt động với các mode (chế độ): bạn không thể gõ chữ ngay khi mở file.
Tại sao nên học Vim: - Tốc độ: Mọi thao tác đều qua bàn phím: không cần chuột. Một số lập trình viên đạt 100+ từ/phút khi edit.
- Phổ biến: Có trên mọi hệ thống Unix. Khi SSH vào server, Vim là editor duy nhất chắc chắn có sẵn.
- Nhẹ: Khởi động dưới 0.5 giây, dùng được trên máy cấu hình thấp nhất.
- Plugin: Hệ sinh thái plugin khổng lồ cho mọi ngôn ngữ lập trình.
2. Các mode cơ bản trong Vim
Vim có 4 mode chính:
- Normal mode (mặc định): Phím tắt di chuyển, xóa, copy, paste. Nhấn
Escđể về mode này từ bất kỳ mode nào. - Insert mode: Gõ chữ như editor thường. Nhấn
i(insert trước con trỏ),a(insert sau con trỏ),o(thêm dòng mới). - Visual mode: Chọn văn bản. Nhấn
v(chọn ký tự),V(chọn dòng),Ctrl+v(chọn cột/block). - Command mode: Gõ lệnh. Nhấn
:từ Normal mode.
Cách bắt đầu mở file: vim ten-file.txt.
Thoát: :q (quit), :wq (save và quit), :q! (quit không save).
Thoát khi không biết làm gì: Esc → :q! → Enter.
Esc vài lần rồi gõ :q!.3. Di chuyển trong Vim (Navigation)
Di chuyển con trỏ bằng phím chữ (không dùng mũi tên):
h: trái.j: xuống.k: lên.l: phải.
Di chuyển nhanh: - w: nhảy đến đầu từ tiếp theo.
b: lùi về đầu từ trước.0: đầu dòng.$: cuối dòng.gg: đầu file.G: cuối file.Ctrl+d: xuống nửa trang.Ctrl+u: lên nửa trang.:42: đến dòng số 42.
3w (nhảy 3 từ), 5j (xuống 5 dòng). Học các phím di chuyển trước: chúng là nền tảng của mọi thao tác.4. Các thao tác chỉnh sửa cốt lõi
Xóa (Delete):
x: xóa 1 ký tự dưới con trỏ.dd: xóa cả dòng.dw: xóa từ hiện tại.d$: xóa từ con trỏ đến cuối dòng.
Copy (Yank) và Paste:
yy: copy cả dòng.yw: copy từ hiện tại.p: paste sau con trỏ.P: paste trước con trỏ.
Undo và Redo:
u: undo (hoàn tác).Ctrl+r: redo (làm lại).
Tìm kiếm:
/tu-khoa: tìm xuôi. Nhấnn(next),N(previous).?tu-khoa: tìm ngược.:%s/cu/moi/g: thay thế toàn bộ "cu" bằng "moi" trong file.
5. Cấu hình Vim với.vimrc
File ~/.vimrc chứa cấu hình Vim của bạn.
Một số cài đặt cơ bản: ```
" Cơ bản
set number " Hiện số dòng
set relativenumber " Số dòng tương đối
set tabstop=4 " Tab = 4 spaces
set shiftwidth=4 " Indent = 4 spaces
set expandtab " Tab thành spaces
set autoindent " Tự động thụt dòng
set smartindent " Thụt dòng thông minh
" Giao diện
syntax on " Tô màu cú pháp
set background=dark " Nền tối
colorscheme desert " Chọn màu sắc
" Tiện lợi
set mouse=a " Hỗ trợ chuột
set hlsearch " Highlight kết quả tìm
set incsearch " Tìm khi đang gõ
set clipboard=unnamed " Copy ra hệ thống
```
Sau khi thêm cấu hình, lưu file và chạy :source ~/.vimrc hoặc mở lại Vim.
6. Plugin manager và plugin hữu ích
Quản lý plugin với vim-plug:
(1) Cài vim-plug: chạy lệnh từ trang github.com/junegunn/vim-plug.
(2) Thêm vào .vimrc:
```
call plug#begin()
Plug 'preservim/nerdtree' " File explorer
Plug 'vim-airline/vim-airline' " Status bar đẹp
Plug 'tpope/vim-fugitive' " Git integration
Plug 'neoclide/coc.nvim', {'branch': 'release'} " Autocomplete
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } } " Fuzzy finder
Plug 'morhetz/gruvbox' " Color scheme
call plug#end()
```
(3) Mở Vim, chạy :PlugInstall: tự động cài tất cả.
Học Vim là đầu tư dài hạn cho tốc độ code. Tuần đầu khó, tháng đầu quen, sau 3 tháng bạn sẽ không muốn quay lại editor thường.
🙋 Câu hỏi thường gặp
Vim khác gì với VS Code?
VS Code là GUI editor có chuột, menu, extension phong phú. Vim là terminal editor, không có GUI mặc định, mọi thao tác qua bàn phím. Nhiều người dùng VS Code với Vim extension để có cả hai.
Có nên học Vim nếu không làm lập trình?
Không cần thiết. Vim dành cho người thường xuyên chỉnh sửa file trên terminal: lập trình viên, sysadmin, devops. Nếu bạn chỉ soạn thảo văn bản thông thường, các editor khác dễ học hơn.
Làm sao để thoát Vim khi bị kẹt?
Nhấn Esc nhiều lần để về Normal mode, gõ :q! và Enter. Nếu vẫn không được, nhấn Ctrl+c hoặc Ctrl+[ (tương đương Esc).
Cách cuối cùng: đóng terminal và mở lại.