使用 Doom Nvim 配置 Neovim

除了搗鼓 Doom Emacs 外,我也在同步翻修我的 Vim 配置。其實我最一開始接觸 FOSS 時是個 Vim 用戶,也玩 vim-wiki 等各路工具。大約一年半後因為學習 Lisp 的原因轉戰 Emacs,不過我倒是一直記得 Vim 的基礎快捷鍵,也有一套基於 Vundle 的設置。不過此物及我的配置皆年久失修矣。

Kickstart.nvim

最近在看一些介紹終端機駭客的影片時,提到了 kickstart.nvim 這套工具,開箱即用,令人心動。安裝方式很簡單 - 把 init.lua 複製到 Neovim 預設的配置資料夾 .config/nvim 中即可。稍微閱讀了一下其內容,初始化會安裝幾類工具 - 跟我那時候認識的工具簡直完全不同呀(YouCompleteMe 變成 COQ/CMP、fzf 變成 telescope)!

  • Package management: wbthomason/packer.nvim
  • LSP management: williamboman/mason.nvim
  • Auto-complete function: hrsh67th/nvim-cmp
  • Highlight and navigation: nvim-treeitter/nvim-treesitter
  • Git related plugins: tpope/fugitive
  • Themes and status line
  • Fuzzy finder: nvim-telescope/telescope.nvim

接著是安裝(未安裝情況下)和各種 Vim 配置。最後兩大段則分別是設定 treesitter 和 LSP(基於 mason.nvim)。整體來說還蠻簡單的。

Doom Nvim

後來為了跟 Doom Emacs 有更接近的操作,改用了 doom-nvim 這個套裝。大部分常用的快捷鍵是通用的。啟動速度也很快(一樣採用了 lazy loading 策略)。目前踩到的第一個坑是需要 nerd-font;其他就且戰且走看看現代化編輯器又有什麼新玩法。預設套件部分與 kickstart.nvim 差異無幾。

Doom Nvim 希望使用者切換至自己的 branch 修改官方提供的 modules.luaconfig.lua

git checkout tags/$(git tag -l --sort -version:refname | head -n 1) -b my-config

之後使用 :DoomCheckUpdates 更新 Doom Nvim 本體、用 :PackerSync 更新各路套件。這個作法跟 Doom Emacs 不太一樣。

使用 Mason 安裝 LSP

目前主流的 LSP 管理工具 Mason 帶有一系列安裝腳本,可以代替用戶自動安裝各個語言的 LSP。我試了下,用它安裝 r_language_serverpyright 都十分簡單:

:LspInstall r_language_server
:LSpInstall pyright

Mason 需要系統安裝 luarocks 這個工具來幫助使用。如果需要額外的第三方工具,安裝 LSP 過程中則會報錯並彈出提示。除了通過命令安裝,也能開啟 Mason :Mason 移動游標並按下 i 進行安裝。這個 LSP 是全系統的,所以理論上其他支援 LSP 的編輯器也能讀到。算是一個很不錯的管理終端。

  • Vim