Open5

init.vim -> init.lua

gnkgnk

init.vimからinit.luaの移行をおこなっている。coc.nvimにすべてを任せていたけど、下記を真面目に設定していこうと思う。

  • nvim-lspconfig
  • mason
  • nvim-lint
  • formatter.nvim
  • nvim-cmp

vimスクリプト自体をluaに変換していくのはChatGPTにでも投げとけば一瞬

gnkgnk

packer.nvimもメンテナンスされなくなったらしいので、lazy.nvimに乗り換える。また、null-lsも候補になっていたがこちらもメンテナンス終了ぽいので使わない。これがあると、nvim-lintとformatter.nvimでやるべきLint/Formatterの設定がまとめてできたっぽい。OSSの維持も大変だなぁ

gnkgnk

だいぶシンプルになった

  • ./config/nvim/init.luaは他のファイルを呼ぶのに特化
  • ./config/nvim/lsp/lsp.luaからlinter設定ファイルとformatter設定ファイルとcmp設定ファイルを読み込む
  • そんな感じでlspの設定ができたら、あとはfzf-luaの設定でlspの機能を呼び出せるようにする
gnkgnk

:w時にformatter.nvimで設定したformatが実行されるようにしていたのだけど、文法エラーがあると当然FormatWriteが失敗するのでうざい。

vim.api.nvim_exec(
  [[
  augroup FormatAutogroup
    autocmd!
    autocmd BufWritePost * FormatWrite
  augroup END
]],

文法エラーをチェックしてエラーがないときだけformatOnSaveを実行したいけど難しいなぁと思っていたけど、formatのエラーとか無視すりゃいいだけなので下記でOKだった。

vim.api.nvim_exec(
  [[
  augroup FormatAutogroup
    autocmd!
    autocmd BufWritePost * silent! FormatWrite
  augroup END
]],
gnkgnk

nvim-treesitter で indent: true しても状況に応じて適切なインデントが挿入されなかったので、 indent: false にして、インデント関連は vim-polyglot に任せた。