Neovim · Part 1 — Roadmap chuyển từ VSCode sang Nvim
Lộ trình học Neovim 2025-2026: mental model, setup hiện đại, kỹ năng cần luyện, stack plugin nên dùng và cách đi từ gà mờ đến pro.
Đây là Phần 1 của series 12 bài đưa bạn từ “mở Vim rồi không thoát được” đến dùng Neovim như editor chính thay VSCode.
Mục tiêu không phải biến bạn thành người sưu tầm plugin. Mục tiêu là: mở project thật, đọc code nhanh, sửa code tự tin, nhảy định nghĩa, rename symbol, format/lint, chạy test, làm Git, debug, và bảo trì dotfiles mà không sợ vỡ.
Tại ngày 2026-07-09, baseline của series là:
- Neovim stable 0.12.x.
- Lua config thay vì Vimscript cho cấu hình mới.
lazy.nvimlàm plugin manager thực dụng.- Native LSP mới:
vim.lsp.config()vàvim.lsp.enable(). mason.nvimđể cài tool ngoài như LSP, formatter, linter.- Completion hiện đại với
blink.cmpstable v1. - Formatter/linter tách riêng bằng
conform.nvimvànvim-lint. - Treesitter theo hướng core API của Neovim, tránh tư duy config cũ.
Nếu bạn đọc sau mốc này, hãy kiểm tra lại nvim --version và release page. Neovim đang đổi rất nhanh.
Vì sao chuyển từ VSCode sang Nvim?
VSCode mạnh vì mọi thứ hiện sẵn: sidebar, command palette, file explorer, extensions, terminal, Git, debug. Neovim mạnh ở chỗ khác:
- thao tác text cực nhanh bằng modal editing;
- chạy tốt trong terminal, SSH, container, máy yếu;
- config là code Lua, version được bằng Git;
- LSP/formatter/linter/debug đều là các lớp ghép được;
- editor trở thành một phần của workflow shell, không phải một app tách biệt.
Điểm đau khi mới chuyển là bạn mất đi “đường ray” quen thuộc của VSCode. Series này sẽ dựng lại đường ray đó trong Neovim, từng lớp một.
Bản đồ series
| Phần | Chủ đề | Bạn đạt được |
|---|---|---|
| 1 | Roadmap | Biết học gì, bỏ gì, setup theo chuẩn nào |
| 2 | Cài đặt & cấu trúc config | Có ~/.config/nvim sạch, chạy được |
| 3 | Modal editing | Di chuyển, sửa text, dùng operator/motion |
| 4 | Files, buffers, windows | Không lạc trong project lớn |
| 5 | Plugin architecture | Dùng lazy.nvim, chia module đúng |
| 6 | LSP & completion | Gần trải nghiệm VSCode IntelliSense |
| 7 | Format, lint, Treesitter | Code sạch, highlight tốt, ít lệ thuộc |
| 8 | Search & refactor | Fuzzy find, grep, quickfix, rename |
| 9 | Git, terminal, test, debug | Workflow làm việc hằng ngày |
| 10 | Migration từ VSCode | Map thói quen VSCode sang Nvim |
| 11 | Performance & dotfiles | Update, pin, debug config, sync máy |
| 12 | Capstone | Một setup hoàn chỉnh để dùng thật |
Stack đề xuất 2025-2026
Đây là stack “ít nhưng đủ”:
| Nhu cầu | Lớp chính | Vì sao |
|---|---|---|
| Plugin manager | lazy.nvim | ổn định, có lockfile, lazy-load tốt |
| Cài external tools | mason.nvim | quản lý LSP/DAP/linter/formatter trong Nvim |
| LSP configs | nvim-lspconfig + native vim.lsp.* | dùng API mới, tránh style cũ |
| Completion | blink.cmp v1 stable | nhanh, ít phụ thuộc, hỗ trợ LSP/snippet/path/buffer |
| Format | conform.nvim | kiểm soát formatter theo filetype tốt |
| Lint | nvim-lint | bổ sung CLI linter ngoài LSP |
| Syntax | Treesitter core + parser tooling | highlight theo AST, folding, selection |
| Finder | Telescope hoặc Snacks picker | thay Command Palette + Quick Open |
| Git | gitsigns.nvim | hunk, blame, stage/reset trong buffer |
| File explorer | oil.nvim hoặc mini.files | thao tác file như edit buffer |
Điều quan trọng: mỗi plugin phải trả lời một nhu cầu thật. Nếu bạn chưa biết plugin giải quyết việc gì, đừng cài vội.
Tư duy khác VSCode
VSCode hỏi: “Bạn muốn click vào UI nào?”
Neovim hỏi: “Bạn muốn biến text hiện tại thành text gì?”
Ví dụ:
| Việc | VSCode | Nvim |
|---|---|---|
| Xóa trong ngoặc | chọn text bằng chuột | di( |
| Đổi trong dấu nháy | click, kéo, gõ lại | ci" |
| Di chuyển tới function kế | outline/minimap | ]m, search, Treesitter textobject |
| Mở file | sidebar hoặc Cmd+P | picker, buffer, :edit |
| Rename symbol | F2 | grn hoặc keymap riêng |
| Code action | bóng đèn | gra |
Người mới thường cố biến Neovim thành VSCode thu nhỏ. Đừng làm vậy. Hãy giữ các năng lực VSCode cần thiết, nhưng học ngôn ngữ thao tác text của Vim.
Những gì không nên học ngay
Đừng bắt đầu bằng:
- tự viết statusline phức tạp;
- cài 80 plugin theo dotfiles của người khác;
- học Vimscript sâu;
- tối ưu startup khi config mới có 10 plugin;
- tranh luận distro nào tốt nhất.
Hãy bắt đầu bằng:
- mở, sửa, lưu, thoát;
- di chuyển không dùng phím mũi tên;
- text object: word, quote, bracket, paragraph;
- buffer/window;
- LSP cơ bản;
- search/grep;
- Git/test/terminal.
Checklist trước khi bắt đầu
Cài các tool nền:
nvim --version
git --version
rg --version
fd --version
node --version
npm --version
Khuyến nghị:
- Neovim 0.12.x nếu có thể.
git,ripgrep,fd,curlhoặcwget.- Nerd Font nếu muốn icon đẹp.
- Node.js nếu làm frontend.
- Một terminal tốt: WezTerm, Ghostty, Alacritty, iTerm2, Windows Terminal.
Nếu thiếu rg hoặc fd, fuzzy finder vẫn chạy nhưng trải nghiệm grep/file search sẽ kém hơn hẳn.
Cheatsheet nhập môn
| Phím/lệnh | Ý nghĩa |
|---|---|
i | vào Insert mode |
Esc | về Normal mode |
:w | lưu |
:q | thoát |
:wq | lưu và thoát |
:q! | thoát bỏ thay đổi |
h j k l | trái, xuống, lên, phải |
w b e | nhảy theo word |
0 ^ $ | đầu dòng, ký tự đầu, cuối dòng |
gg G | đầu file, cuối file |
/text | search trong file |
n N | kết quả search kế/trước |
u | undo |
<C-r> | redo |
Quy tắc luyện: mỗi ngày chỉ thêm 3-5 phím mới. Đừng học bằng bảng dài; học bằng việc sửa code thật.
Bài tập
- Cài Neovim và chạy
:checkhealth. - Mở một project thật bằng
nvim ., mở một file, sửa một dòng, lưu, thoát. - Trong một file bất kỳ, không dùng chuột và không dùng phím mũi tên trong 10 phút.
- Ghi lại 5 thao tác VSCode bạn dùng nhiều nhất. Series sẽ map từng thao tác sang Nvim.
Gợi ý kiểm tra
:checkhealth
:echo stdpath('config')
:echo stdpath('data')
:versionNếu stdpath('config') trả về ~/.config/nvim, đó là nơi ta sẽ tạo config ở phần sau.
Nguồn cập nhật
Các bài trong series này được đối chiếu với nguồn chính:
- Neovim releases
- Neovim 0.11 news
- Neovim 0.12 news
- Neovim LSP help
- nvim-lspconfig
- lazy.nvim docs
- mason.nvim
- mason-lspconfig.nvim
- blink.cmp
- conform.nvim
- nvim-lint
Điều cốt lõi
Chuyển sang Neovim không phải đổi theme editor. Đó là đổi cách nghĩ: từ click UI sang nói chuyện với text bằng lệnh ngắn. Series này sẽ dựng editor đủ hiện đại để bạn không thua VSCode, nhưng vẫn giữ được sức mạnh thật của Vim.