VIM THAM KHẢO NHANH
Chế độ, điều hướng, chỉnh sửa, tìm kiếm, macro, buffer
Chế Độ
Chuyển Đổi Chế Độ
| i | Chế độ Insert (trước con trỏ) |
| a | Chế độ Insert (sau con trỏ) |
| o | Chèn dòng phía dưới và vào chế độ Insert |
| O | Chèn dòng phía trên và vào chế độ Insert |
| v | Chế độ Visual (ký tự) |
| V | Chế độ Visual (dòng) |
| Ctrl+v | Chế độ Visual block |
| : | Chế độ dòng lệnh |
| R | Chế độ Replace |
| Esc | Quay về chế độ Normal |
Điều Hướng
Di Chuyển Ký Tự & Dòng
| h j k l | Trái, xuống, lên, phải |
| 0 / ^ | Đầu dòng / ký tự đầu không phải khoảng trắng |
| $ | Cuối dòng |
| w / W | Từ tiếp theo / WORD tiếp theo |
| b / B | Từ trước / WORD trước |
| e / E | Cuối từ / WORD |
| f{c} / F{c} | Tìm ký tự tiến / lùi |
| t{c} / T{c} | Đến trước ký tự tiến / lùi |
Di Chuyển Màn Hình & File
| gg / G | Đến dòng đầu / cuối |
| :{n} | Đến dòng n |
| Ctrl+d / Ctrl+u | Cuộn nửa trang xuống / lên |
| Ctrl+f / Ctrl+b | Cuộn một trang xuống / lên |
| H / M / L | Đầu / giữa / cuối màn hình |
| % | Nhảy đến dấu ngoặc tương ứng |
Chỉnh Sửa
Insert & Append
| I | Insert ở đầu dòng |
| A | Append ở cuối dòng |
| ea | Append ở cuối từ |
| gi | Insert tại vị trí insert cuối |
Xóa & Thay Đổi
| x / X | Xóa ký tự tại / trước con trỏ |
| dd | Xóa dòng |
| dw | Xóa từ |
| d$ / D | Xóa đến cuối dòng |
| cc / S | Thay toàn bộ dòng |
| cw | Thay từ |
| c$ / C | Thay đến cuối dòng |
| ci" / ci( | Thay bên trong dấu nháy / ngoặc |
Sao Chép & Dán
| yy | Yank (sao chép) dòng |
| yw | Yank từ |
| y$ | Yank đến cuối dòng |
| p / P | Dán sau / trước con trỏ |
| J | Nối dòng phía dưới vào dòng hiện tại |
Undo & Lặp Lại
| u | Undo |
| Ctrl+r | Redo |
| . | Lặp lại lệnh cuối |
Tìm Kiếm & Thay Thế
Tìm Kiếm
| /pattern | Tìm kiếm tiến |
| ?pattern | Tìm kiếm lùi |
| n / N | Kết quả tiếp / trước |
| * | Tìm từ tại con trỏ (tiến) |
| # | Tìm từ tại con trỏ (lùi) |
Thay Thế
:s/old/new/ " replace first on line
:s/old/new/g " replace all on line
:%s/old/new/g " replace all in file
:%s/old/new/gc " replace all, confirm each
Chế Độ Visual
Chọn Vùng
| v | Bắt đầu chọn ký tự |
| V | Bắt đầu chọn dòng |
| Ctrl+v | Bắt đầu chọn block |
| o | Di chuyển đến đầu kia vùng chọn |
| gv | Chọn lại vùng visual cuối |
Hành Động Trên Vùng Chọn
| d | Xóa vùng chọn |
| y | Yank vùng chọn |
| c | Thay vùng chọn |
| > | Thụt lề vùng chọn |
| < | Bỏ thụt lề vùng chọn |
| ~ | Đổi hoa/thường |
| U / u | Chữ hoa / chữ thường vùng chọn |
Buffer & Cửa Sổ
Buffer
| :ls | Liệt kê buffer đang mở |
| :bn / :bp | Buffer tiếp / trước |
| :b{n} | Đến buffer n |
| :bd | Đóng buffer hiện tại |
| :e file | Mở file trong buffer mới |
Cửa Sổ
| :sp file | Chia ngang |
| :vsp file | Chia dọc |
| Ctrl+w h/j/k/l | Điều hướng đến cửa sổ |
| Ctrl+w = | Cân bằng kích thước cửa sổ |
| Ctrl+w q | Đóng cửa sổ |
Tab
| :tabnew file | Mở file trong tab mới |
| gt / gT | Tab tiếp / trước |
| :tabclose | Đóng tab hiện tại |
Register
Sử Dụng Register
| "ay | Yank vào register a |
| "ap | Dán từ register a |
| "Ay | Nối yank vào register a |
| :reg | Hiển thị tất cả register |
Register Đặc Biệt
| "" | Không tên (xóa/yank cuối) |
| "0 | Yank cuối |
| "+ | Clipboard hệ thống |
| "/" | Pattern tìm kiếm cuối |
| ". | Văn bản insert cuối |
| "_ | Hố đen (bỏ qua) |
Macro
Ghi & Phát
| q{a} | Bắt đầu ghi macro vào register a |
| q | Dừng ghi |
| @{a} | Phát macro từ register a |
| @@ | Phát lại macro cuối |
| 5@a | Phát macro a 5 lần |
Ví Dụ Macro
qa " start recording into a
I// " insert // at line start
Esc j " return to normal, move down
q " stop recording
10@a " comment next 10 lines
Cài Đặt
Tùy Chọn Phổ Biến
:set number " show line numbers
:set relativenumber " relative line numbers
:set tabstop=4 " tab width
:set expandtab " spaces instead of tabs
:set ignorecase " case-insensitive search
Hiển Thị & Hành Vi
:set wrap / nowrap " toggle line wrapping
:set hlsearch " highlight search matches
:set incsearch " incremental search
:set cursorline " highlight current line
:syntax on " enable syntax highlighting
Thao Tác File
Lưu & Thoát
| :w | Lưu |
| :w file | Lưu thành file |
| :q | Thoát (thất bại nếu chưa lưu) |
| :q! | Thoát không lưu |
| :wq / :x / ZZ | Lưu và thoát |
| :wa | Lưu tất cả buffer |
| :qa | Thoát tất cả buffer |
Thông Tin File & External
| Ctrl+g | Hiển thị thông tin file |
| :!cmd | Chạy lệnh shell |
| :r !cmd | Chèn output lệnh |
| :r file | Chèn nội dung file |
Text Object
Inner & Around Object
| iw / aw | Bên trong / bao quanh từ |
| is / as | Bên trong / bao quanh câu |
| ip / ap | Bên trong / bao quanh đoạn |
| i" / a" | Bên trong / bao quanh dấu nháy kép |
| i' / a' | Bên trong / bao quanh dấu nháy đơn |
| i( / a( | Bên trong / bao quanh ngoặc đơn |
| i{ / a{ | Bên trong / bao quanh ngoặc nhọn |
| it / at | Bên trong / bao quanh thẻ HTML |
Kết Hợp Phổ Biến
ciw " change inner word
di" " delete inside quotes
ya{ " yank around braces
vip " select inner paragraph
Mark & Jump
Mark
| m{a} | Đặt mark a tại vị trí con trỏ |
| 'a | Nhảy đến dòng của mark a |
| `a | Nhảy đến vị trí chính xác của mark a |
| :marks | Liệt kê tất cả mark |
Jump List
| Ctrl+o | Nhảy về vị trí trước |
| Ctrl+i | Nhảy đến vị trí tiếp |
| :jumps | Hiển thị jump list |
| '' | Nhảy đến vị trí jump cuối |