[neovim]init.lua化計画
とりあえず現状の備忘録的に自分なりにやったことを残しておく。
luaでneovimの設定を書ける
neovimの設定ファイルといえばvim scriptで書くinit.vim
ですが、neovimはLua 5.1もサポートしており、このPRからinit.lua
でも設定が書けるようになっています。
遅いvim scriptから脱却するためにneovimはLua, VimはVim9 scriptを導入するということでそれぞれ別の道を行く感が出てきましたね。
ちなみに、
他言語よりLuaで実装したプラグインのほうが処理速度は速いです。LuaはNeovim内部で動くため、プラグインとNeovim間のRTT(Round-Trip Time)が他の言語より短いです。 引用元
上記の通りLuaの最大の恩恵はプラグインをLuaで書くことによって他の言語のプラグインよりも処理速度が速くなることです。
たかだか設定ファイルをluaで書くことで目に見えるほど速度が改善するということはありませんが、とりあえずものは試しということでvim scriptからLuaに移行をしてみようと思います。
僕のinit.lua
手っ取り早く僕が移行したneovimの設定ファイルを紹介します。
mah-shee/nvim-config
以下が僕がneovimの設定ファイルを書いているディレクトリ構造です。場所はmacなので~/.config/nvim/
に置いてます。
.
├── autoload
│ └── (略)
├── dein.toml
├── dein_lazy.toml
├── deinft.toml
├── init.lua
├── lua
│ ├── config.lua
│ ├── keys.lua
│ ├── options.lua
│ └── plugins
│ ├── dein.lua
│ ├── hop.lua
│ ├── lsp_config.lua
│ ├── lualine.lua
│ ├── telescope.lua
│ └── treesitter.lua
├── plugins
│ └── (略)
└── signs
└── (略)
直下の./init.lua
はinit.vim
を置いていた場所と同じ場所に置いてあり、このファイルはneovimが自動で読み込んでくれます。
require('config')
中身は./lua
ディレクトリ内のconfig.lua
を呼び出しているだけ。
neovimはruntimepath内のluaディレクトリを自動で読み込んでくれるので、こう書くだけで大丈夫なんですねー。また、拡張子の.lua
は書かなくてもok
./lua/config.lua
では分割したファイルを読み込むのがメインです。Lua製プラグインの設定はlua/plugins/
以下に配置し、require('plugins.*
)で読み込んでいます。
Luaはドットでディレクトリ配下を読み込んでくれますが、requrire('plugins/*')
とも書けるみたいです。
参考資料
NeovimとLua
NeovimのためのLua入門 init.lua編
Getting started using Lua in Neovim
Nvim documentation: lua
Vim9 script はどれくらい速いのか
Discussion