Yuan Neovim 備忘 === ## 依賴的套件 * ripgrep 全文搜尋用 * tree-sitter 快速且增量式的語法剖析器(parser) * tree-sitter-bash * tree-sitter-cli * imagemagick * ueberzugpp ## 基本快速鍵 ### 重要鍵 * leader key: `\` * window key: `ctrl+w` * move cursor: (方向鍵) ### 擴充自行設定的快速鍵 * `` 可以回朔到開啟檔案以來的任何歷史,還會標出修改的地方 * `` 看看你設定了哪些變數、函數,也可以快速跳轉 * ``: NeoTree: 查看已經開啟的檔案 * ``: NeoTree * ``: git status * `fT`: 浮動NeoTree * `fB`: 已開啟的檔案 ### 編輯習慣(已經覆寫) * shift+方向鍵(傳統): 選取文字(傳統習慣) * PS. 不能用jk是因為 shift+j shift+k有被其他功能綁定,不覆寫是想順便習慣vim用法 * alt+方向鍵(傳統/jk):移動整行 * ctrl+alt+shaft+方向鍵(傳統/jk):向上/向下複製整行 * tab縮排(含輸入模式的shift+tab傳統習慣對應) #### 剪貼簿 * 輸入模式 * ctrl+v: 貼上 * 選取模式 * ctrl+x: 剪下 * ctrl+c: 複製 * ctrl+v: 取代貼上 ## 基本Command * :Neotree float git_status git_base=main * :verbose map * echo getchar() ## 資料夾結構 ``` dot_config/nvim ├── init.vim #主要設定進入點 傳統vim設定檔 (傳統語法兼容用) ├── lua │ ├── init.lua #主要設定進入點 新式給nvim專用設定 │ ├── config │ │ ├── gui.lua │ │ ├── lazy.lua │ │ └── options.lua │ └── plugins │ └── example.lua #LazyNvim給的範例,已經被第一段截斷掉,所以此腳本將不會執行 └── Readme.md ``` ## LSP -Language Server Protocol 因為設定方式與結構太過複雜,故獨立開 ### 和LSP有關的目錄結構 ``` ~/.config/nvim/ ├── lua/ │ ├── plugins/ │ │ ├── lsp.lua <-- 所有 LSP / cmp 相關 plugin 定義 │ ├── lsp/ │ │ ├── init.lua <-- 初始化 Mason / LSP 等 │ │ ├── config/ │ │ │ ├── mason.lua <-- 1. Mason 設定,需要的程式語言安裝都在這定義 │ │ │ ├── lspconfig.lua <-- 2. 載入各語言的設定 │ │ │ └── cmp.lua <-- nvim-cmp 設定 │ │ └── servers/ │ │ ├── php.lua │ │ ├── pyright.lua │ │ └── ... │ └──(可另外有 config/、keymaps/ 等其他模組) ``` ## 代找外掛 * Align * ## neo-tree ``` { "", "Neotree toggle", desc = "NeoTree" }, { "e", "Neotree reveal" }, { "ft", "Neotree toggle", desc = "NeoTree" }, { "fT", "Neotree float", desc = "NeoTree Float" }, { "fF", "Neotree filesystem float", desc = "NeoTree Filesystem Float" }, { "fG", "Neotree git_status float", desc = "NeoTree Git Status Float" }, { "fB", "Neotree buffers float", desc = "NeoTree Buffers Float" } ``` 在當前NeoTree視窗 * `P`: 預覽開關