# 🛠️ Cheatsheet: Config neovim trên win 11

By 3T1C

> This cheatsheet is premium content. Sign in and purchase the course to view the full content.

Bảng tra cứu nhanh cho toàn khóa. Dùng khi đang config, khi plugin không chạy, hoặc khi cần nhớ lại cú pháp.

---

## 1. Cấu trúc thư mục và entry point

### Đường dẫn chuẩn trên Windows 11

| Mục đích | Đường dẫn |
| --- | --- |
| Config (`$XDG_CONFIG_HOME`) | `%LOCALAPPDATA%\nvim\` |
| File entry point | `%LOCALAPPDATA%\nvim\init.lua` |
| Data (plugin, lazy state) | `%LOCALAPPDATA%\nvim-data\` |
| Cache | `%LOCALAPPDATA%\nvim-data\cache\` |
| Kiểm tra nhanh | `:echo stdpath("config")` và `:echo stdpath("data")` |

> **Important:** 
> Trên Windows, `~/.config/nvim` không phải đường dẫn mặc định của Neovim. Dùng `stdpath("config")` để chắc chắn, đừng đoán.

### Bộ khung `init.lua` tối thiểu

```lua
-- %LOCALAPPDATA%\nvim\init.lua
vim.g.mapleader = " "            -- PHẢI set trước khi load plugin
vim.g.maplocalleader = ","

vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.expandtab = true
vim.opt.shiftwidth = 2
vim.opt.tabstop = 2
vim.opt.termguicolors = true     -- cần cho theme hiện đại
vim.opt.clipboard = "unnamedplus"

require("config.lazy")           -- nạp plugin manager
require("config.keymaps")        -- keymaps riêng
```

### Tổ chức file gợi ý

```tree
nvim/
  init.lua
  lua/
    config/
      lazy.lua
      keymaps.lua
      options.lua
    plugins/
      telescope.lua
      lsp.lua
      treesitter.lua
      git.lua
      terminal.lua
```

| Quy ước | Lý do |
| --- | --- |
| `init.lua` chỉ chứa bootstrap + `require` | Dễ đọc, dễ rollback |
| Mỗi plugin một file trong `lua/plugins/` | lazy.nvim tự import cả thư mục |
| Keymap tách riêng `keymaps.lua` | Tránh rải rác, dễ grep |
| Không nhét logic nặng vào `init.lua` | Startup chậm, khó debug |

---

## 2. lazy.nvim và vim.pack

### Bootstrap lazy.nvim
