🗂

[neovim]init.lua化計画

2021/03/09に公開

とりあえず現状の備忘録的に自分なりにやったことを残しておく。

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.luainit.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