Lua Module

なんと、これに関しては既に日本語に訳されたドキュメントが存在します。

登っていきましょうとか言っておいてなんですが、まずは掘り下げちゃいます。どんまい😆

Luaモジュールは、runtimepath内のlua/フォルダにあります (ほとんどの場合、*nixでは~/.config/nvim/lua、Windowsでは~/AppData/Local/nvim/luaを意味します)。

このフォルダにあるファイルをLuaモジュールとしてrequire()できます。

runtimepath

一個ずつ見ていきますが、runtimepathNeovimで以下のコマンドを使用することで確認できます。

runtimepathを確認

:lua print(vim.inspect(vim.api.nvim_list_runtime_paths()))
config-create

いきなりちょっと複雑でしたね😅

頑張ってコマンドを打つと、出力の中に "~/.config/nvim"があるはずです。 1

(上の例はunixなので"/home/utm-user/.config/nvim")

Note

補足しておくと、OSによってホームディレクトリは違いますが、~$HOMEを使ってアクセスできます。

ここにluaディレクトリを作成することで、上に示されている「ほとんどの場合」に合致できます。

luaディレクトリを作る

mkdir ~/.config/nvim/lua

あと、runtimepath絡みでもう一つポイントがあります。

runtimepath内にある特定のフォルダからLuaファイルを自動的に読み込めます。 現在、次のフォルダがサポートされています。

  • colors/
  • compiler/
  • ftplugin/
  • ftdetect/
  • indent/
  • plugin/
  • syntax/

逆に言うと、luaディレクトリは自動では読み込まないぞ❗ということですね。

luaディレクトリに置いたファイルは~/.config/nvim/init.luaからrequire()で読み込んでいきましょう。

require()

require()WezTermでも使いましたね。

WezTermの時はwezterm.lua と同じディレクトリにあるファイルを読み込むことにしか使用していませんでしたが、 もうちょっと高機能です。

次のLuaコードはmyluamodule.luaをロードします。:

require('myluamodule')

.lua拡張子がないことに注意してください。

同様に、other_modules/anothermodule.lua のロードは次のように行います。:

require('other_modules.anothermodule')
-- or
require('other_modules/anothermodule')

パスの区切りはドット.またはスラッシュ/で示されます。

フォルダにinit.luaが含まれている場合、ファイル名を指定せずにロードできます。

Tip

最後の一文は、

require('example') 

とした場合にexample/init.luaをロードできるよ❗ってことですね。これはNeovimに限ったものではなく、Luaの仕様みたいです。

全く関係ないところでやってみてもこの説明で通用するものになりました。

lua-example

Note

ここから先、特に明記しない限りは~/.config/nvim/luaまたは~/AppData/Local/nvim/luaディレクトリを前提としていきます😌

Success

どう?この流れ🐮

能書きとしてはこんな感じじゃないでしょうか。

これだけ分かれば、あとはもうカスタマイズを書き加えていくだけですね😄