blog.dopana

Back

Vim không dễ — nhưng một khi đã quen, bạn sẽ không muốn quay lại. Modal editing giúp thao tác với văn bản nhanh hơn chuột rất nhiều.

Các chế độ (mode):

Normal  → Insert  → Visual  → Command
  ↓        ↓          ↓          ↓
  Điều    Gõ chữ    Chọn text  Lệnh
  hướng
plaintext

Thoát Insert: Esc hoặc Ctrl+[


    k
← h   l →    ← b/w (word)
    j           e (end of word)
    ↓         0/$ (đầu/cuối dòng)
             ^ (ký tự đầu dòng)
text
PhímHành động
h/j/k/lTrái/xuống/lên/phải
w/bWord tiếp/trước
eCuối word
0 / ^ / $Đầu dòng / ký tự đầu / cuối dòng
gg / GĐầu file / cuối file
:{number}Nhảy đến dòng số
Ctrl+d/uNửa trang xuống/lên
Ctrl+f/bTrang xuống/lên
%Nhảy đến ngoặc tương ứng
* / #Tìm từ hiện tại tiếp theo/trước

Editing — Thao Tác Văn Bản#

Cú Pháp: [count]operator[motion]#

d2w  → delete 2 words
ci(  → change inside parentheses
y3j  → yank 3 dòng xuống
plaintext

Operators#

PhímHành động
dDelete (cắt)
yYank (copy)
cChange (xóa + vào Insert)
p / PPaste sau/trước
xXóa ký tự
rReplace 1 ký tự
.Lặp lại hành động cuối

Visual Mode#

v      → Visual (ký tự)
V      → Visual line
Ctrl+v → Visual block
plaintext

Chọn xong: d (xóa), y (copy), > (indent), ~ (đổi case).

Command Mode#

:w        " Save
:q        " Quit
:wq       " Save & quit
:q!       " Force quit
:e file   " Mở file
:bd       " Close buffer
:sp       " Split ngang
:vsp      " Split dọc
:!command " Chạy shell command
:%s/old/new/g  " Replace toàn file
vim

Buffers, Windows, Tabs#

Buffer → File trong bộ nhớ
Window → Cửa sổ xem buffer
Tab    → Collection của windows
text
:ls           " Danh sách buffer
:b 3          " Đến buffer số 3
:bn / :bp     " Buffer tiếp/trước

Ctrl+w v      " Vertical split
Ctrl+w s      " Horizontal split
Ctrl+w w      " Chuyển window
Ctrl+w q      " Đóng window

:tabnew file  " Tab mới
gt / gT       " Tab tiếp/trước
vim

Neovim — Vim Hiện Đại#

Neovim là fork của Vim với nhiều cải tiến:

  • LSP built-in — autocomplete, go-to-definition
  • Lua thay Vimscript — cấu hình mạnh hơn, dễ hơn
  • Treesitter — syntax highlight chính xác
  • Built-in terminal — :term

Config Cơ Bản (init.lua)#

Plugins Thiết Yếu#

Plugin Tương Đương IDE#

IDE FeatureNeovim Plugin
File explorernvim-tree
Fuzzy findTelescope
Autocompletenvim-cmp + LSP
Git blamegitsigns
TerminalBuilt-in
Debuggernvim-dap
Test runnerneotest
SnippetsLuaSnip

Vim Trong IDE#

Hầu hết IDE đều có Vim mode:

  • VS Code: Vim extension
  • JetBrains: IdeaVim plugin
  • VSCode Neovim: Dùng Neovim thật trong VS Code

Mẹo Hay#

" Sửa lỗi nhanh
ciw    " Xóa word hiện tại, vào insert
ci"    " Xóa trong ngoặc kép
cap    " Xóa trong tag HTML (change around pair)
dd     " Xóa dòng
D      " Xóa từ cursor đến cuối dòng
C      " Xóa từ cursor đến cuối dòng + insert

" Macro — ghi và lặp
qa     " Ghi macro vào register a
...    " Thao tác
q      " Dừng ghi
@a     " Chạy macro a
@@     " Lặp lại macro cuối
vim

Kết Luận#

Vim khó tuần đầu — nhưng đầu tư 2 tuần để học, bạn tiết kiệm hàng trăm giờ về sau. Bắt đầu với vimtutor (gõ trong terminal). Sau đó dùng Neovim với config tối thiểu, thêm plugin khi cần. Đừng copy config ai đó — tự build dần dần.

Tài liệu tham khảo#