自分のNeovimのconfigをluaに書き直してみました。
vimのconfigは以下
luaで書き直しているconfigは以下
luaに何故置き換えるのかは、以下のredditのpostが分かりやすかったです。
書き直す時にやったこと
まずluaのvim api周りの構文を調べました。 以下のページを読むと分かると思います。
keymapを置き換える
例えば以下のようなkeymapを登録していた場合
inoremap <silent> jj <ESC>
以下のようになる
vim.api.nvim_set_keymap('i', 'jj', '<ESC>', { noremap = true, silent = true })
silent = trueなどの情報を別途渡す必要があったり、nvim_set_keymapを呼ぶ必要があるのが若干冗長にはなっています。
autocmdを置き換える
例えば以下のような設定だと
autocmd bufnewfile,bufread *.tsx set filetype=typescriptreact
以下のようになる
vim.cmd('autocmd bufnewfile,bufread *.tsx set filetype=typescriptreact')
上述したguideでも書かれていますが、autocmdはまだサポートされていないようなので、無理矢理vimのcmdを実行して読み込ませるというのをしています。
極論、全部の設定をvim.cmdなどで実行すれば、動きはするのですが、それだと可読性が下がってしまうので極力Neovimが提供しているapiを使うのが良いのかなと思います。
plugin manager
packer.nvimを入れてみました
設定がluaで書けるのと、遅延読み込みなど機能も十分あるのが良いなと思いました。
packer.nvimについては以下の記事がめちゃめちゃ詳しいです。
思ったこと
luaで書かれたpluginを入れて、luaで設定を書けるので切り替えコストみたいなものは小さくなるので、今後Neovimでluaのpluginを入れていく時には楽になりそうだなと思いました。
その反面、自分でvimに便利機能を生やそうとした時には、まだ実装されていないapiなどがあったりすると少しやりづらい状態にはなっていそうです。でも今でも十分利用はできそうな気がするので、少しトライしてみようと思います。
終わり
LunarVimなど凄いconfigもあるので、参考にしていこうと思います。