NeovimのLuaサポートについて
#Neovim #Lua
NeovimがLuaファイルを読み込む際の挙動
設定
Neovimは通常のinit.vimの代わりにinit.luaを設定として読み込むことができます
Luaモジュール
Neovimではruntimepathのlua/ディレクトリにLuaモジュールを配置できます
require()でLuaモジュールを読み込めます
※require()は、NeovimではなくLuaに組み込まれたモジュール読み込みのための仕組みです。
例えば、lua/foo.luaはrequire('foo')で読み込めます
特定のディレクトリ内のモジュールを読みたいときは、.または/区切りでパスを指定します (例: lua/parent/child.luaはrequire('parent.child')で読み込めます)
ディレクトリにinit.luaが含まれる場合、requireを呼ぶ際にファイル名を省略できます (例: lua/some_module/init.luaはrequire('some_module')で読み込めます)
ランタイムファイル
runtimepath配下のplugin/やftplugin/などのディレクトリに.luaファイルがある場合、.vimと同様に自動で読み込まれます
これらのディレクトリに.vimと.luaのファイルが両方含まれている場合、.vimのファイルが先に読み込まれます
Vimコマンド
:lua
NeovimからLuaコードを実行できます。
例) :lua print(123)
print()の出力内容は、:echomsgなどと同様に:messagesで閲覧できます。
:luafile
指定されたLuaファイルを実行できます。
例) :luafile path/to/file.lua
:sourceコマンドでもLuaファイルは実行可能です。
Vim関数
luaeval()
与えられたLuaの式を評価し、その結果を返します。
例) :echo luaeval('1 + 2')
Luaのデータ型とVimScriptのデータ型は相互に自動変換されます。
v:lua
Luaの関数をVimScriptから実行することができます。
例) :call v:lua.print('foobar')
Lua標準モジュール
NeovimはLuaに対していくつかのAPIを提供しています。
例) :lua print(vim.api.nvim_eval('1 + 2'))
:h lua-stdlibでヘルプを閲覧できます。
参考
https://neovim.io/doc/user/lua-guide.html
Neovim公式のLuaガイド
nanotee/nvim-lua-guide
NeovimからLuaを使う方法について
NeovimとLua
NeovimとLuaの関係性についてまとめられた記事
From init.vim to init.lua
init.vimからinit.luaに移行する方法について
Collection of DOs and DON'Ts for modern Neovim Lua plugin development
リンク
Luaで書かれたNeovimプラグイン