Checkpoint: Nền tảng cấu hình Lua và plugin manager
Quiz
- Trên Windows 11, Neovim đọc file cấu hình `init.lua` ở thư mục nào?
- `%LOCALAPPDATA%/nvim-data`
- `C:/Users/<tên>/.config/nvim`
- `%LOCALAPPDATA%/nvim`, tức `C:/Users/<tên>/AppData/Local/nvim`
- `%APPDATA%/nvim`, tức `C:/Users/<tên>/AppData/Roaming/nvim`
- Bạn sửa nội dung `lua/config/options.lua`, chạy `:source $MYVIMRC` nhưng thay đổi không có tác dụng. Nguyên nhân đúng nhất là gì?
- Module đã được `require` nên bị cache trong `package.loaded`; cần restart Neovim hoặc `:luafile %` khi đang mở chính file đó
- `init.lua` phải nằm trong thư mục `lua/` mới được nạp lại
- Phải chạy `:source $MYVIMRC` hai lần liên tiếp
- File phải lưu với CRLF thì Neovim mới đọc lại
- Trong plugin spec của lazy.nvim, khai báo `cmd = "Telescope"` và `keys = { ... }` có tác dụng gì?
- Plugin chỉ load khi gõ command hoặc bấm keybinding tương ứng (lazy loading)
- Plugin tự động cài `dependencies` mà không cần khai báo
- Plugin load ngay khi khởi động để sẵn sàng nhận lệnh
- Plugin bị tắt hoàn toàn cho tới khi chạy `:Lazy sync`
- Triệu chứng: bấm `<leader>ff` không có gì xảy ra, nhưng bấm `\ff` lại chạy. Nguyên nhân và cách sửa đúng?
- `vim.g.mapleader` được set quá muộn, sau khi plugin đã bind phím với leader mặc định `\`; cần đặt nó trước `require("lazy").setup()`
- Keymap viết sai cú pháp, cần viết lại bằng `vim.keymap.set`
- Space không dùng được làm leader trên Windows 11, phải dùng `,`
- Cần bật `remap = true` cho mọi keymap
- Những phát biểu nào đúng về lazy.nvim và `vim.pack`? (chọn tất cả đáp án đúng)
- `vim.pack` có sẵn từ Neovim 0.12 và cài qua `vim.pack.add({ "https://github.com/user/repo" })`
- `vim.pack` hỗ trợ lazy loading theo `event`, `cmd`, `keys` giống lazy.nvim
- Lazy.nvim cài plugin vào thư mục `lazy` bên trong `stdpath('data')`, tức `~/AppData/Local/nvim-data/lazy`
- Khai báo cả `opts` và `config` cho cùng một plugin khiến `setup()` chạy hai lần, dễ reset state
- File trong `lua/plugins/` thiếu `return` thì plugin vẫn được cài bình thường
- Nên chạy song song cả lazy.nvim và `vim.pack` trong cùng một config để linh hoạt hơn
- Những thực hành nào đúng khi viết keymap bằng `vim.keymap.set`? (chọn tất cả đáp án đúng)
- Dùng `<cmd>write<cr>` thay `:write<cr>` vì `<cmd>` không đi qua cmdline và không đổi mode
- Đặt `remap = true` cho mọi keymap vì mặc định `vim.keymap.set` là remap
- Chia namespace phím theo tên plugin để dễ nhớ plugin nào dùng phím nào
- Phím LSP như `gd` hay rename nên map buffer-local trong autocmd `LspAttach` với `buffer = ev.buf`
- Luôn đặt `desc` để `:map`, which-key và Telescope keymaps đọc được mô tả
- Lệnh dùng để in ra đường dẫn thư mục cấu hình Neovim là `:echo ____` (điền biểu thức bên trong dấu ngoặc, ví dụ dạng `stdpath('...')`).
- Trong `init.lua`, thứ tự `require` hợp lý là: options, rồi keymaps, rồi plugin manager. Tên module của plugin manager trong khung bài học là `require('config.____')`.
- Hãy tự đánh giá: bạn có dựng lại được bộ khung cấu hình Module 1 từ đầu trên máy Windows 11 của mình không? Mở Neovim và kiểm tra từng mục dưới đây.
- Tự đánh giá khả năng mở rộng config: bạn có thể tự thêm một plugin mới vào hệ thống hiện tại mà không làm rối `init.lua` không?
Sign in to submit answers.