🐢

lazyvimの遅延読み込み (lazyvim load lazy plugin)

2024/12/04に公開

過去に作成した記事
https://zenn.dev/tositada/articles/b9190cce45812f
https://zenn.dev/vim_jp/articles/31e60fbf12712b

前回lazyvimでプラグインを導入する方法について書きました。必要な場合は前回、前々回の記事を参考ください。
lazyvimでは、neovim起動時にプラグインを呼び出さずに後から必要な時にプラグインを呼び出す遅延読み込みが搭載されており、event,cmd,ft,keys のいづれかを持つ場合に呼び出されます。
これらの項目を中心にプラグインの設定方法について説明しようと思います。

開始

linuxでxxdをインストールした後にnvim/lua/plugins/hex.luaに書き込んでみます。
windowsの場合にもxxd for windowsを作っている方がいるようですね。

以降記事の中でnvim/と記載する場合以下のフォルダー以下を指します。
windows: C:\Users\user\AppData\Local\nvim\
linux: /home/user/.config/nvim

nvim/lua/plugins/hex.luaにファイルを作成して書き込んでみよう。
一度nvimを閉じて再度開いたときに反映されます。

return {
 'RaafatTurki/hex.nvim',
 ft= {"hex", "efi"},
 opts = { },
 event = {"BufRead", },
 cmd = {
  "HexDump",
  "HexAssemble",
  "HexToggle",
 }
}

image

neovimでバイナリエディタを使いたい場合 RaafatTurki/hex.nvimを使用することができます。

https://github.com/RaafatTurki/hex.nvim

ft

開いたファイルが指定したファイルタイプの拡張子になっている場合にプラグインを読み込みます。
例だと拡張子hexまたは、efiの場合にプラグインを読み込みます。

cmd

プラグインの既存のコマンドでプラグインをロードするために使用します。RaafatTurki/hex.nvimには、3つのコマンドがあります。
HexDump,HexAssemble,HexToggle
lazyvimのコマンドモードで呼び出すにはcmdを使用します。
lazyvimで:HexDumpを実行するとバイナリエディタが開かれることが理解できます。

event

プラグインを読み込むタイミングを決定します。
ftでフォルダーの形式を選択しただけでは、プラグインの読み込みが行われないので、読み込みのタイミングをhex,efiのファイルを開いたときに呼び出されるようにします。
他のタイミングで使用するには以下ドキュメントを参考にしてください。
LazyVim特定のものとしてVeryLazy最初からロードしておくがあるようですね

https://neovim.io/doc/user/autocmd.html#autocmd-events
https://vim-jp.org/vimdoc-ja/autocmd.html#autocmd-events

keys

キーが入力されたタイミングで遅延読み込みを行います。
{ "key", "global command", "description(説明)"}を記載します。
例としては以下のようになります。

自分がよく使う機能の一つとして lazyDocker を入れて見たいと思います.
lazyDockerはcuiのアプリケーションなので pacman -Sy lazydocker等を実行してインストールします。
nvim/lua/plugins/lazydocker.luaファイルを作ります。
spaceキーを押してkeymapを開くと、LazyDockerが追加されたことを確認できます。
spaceキーを押してdを押すとなにLazyDockerが開くと思います。
<leader>はデフォルト状態でspacekeyと設定されています。
<leader>dに何か別のコマンドがついている場合、<leader>dpsなど別のキーを割り当ててください

nvim/lua/plugins/lazydocker.lua

return {
  "crnvl96/lazydocker.nvim",
  opts = {}, -- automatically calls `require("lazydocker").setup()`
  dependencies = {
    "MunifTanjim/nui.nvim",
  },
  cmd = {
    "LazyDocker",
  },
  keys = {
    { "<leader>d", "<cmd>LazyDocker<CR>", desc = "LazyDocker" },
  },
}

https://github.com/jesseduffield/lazydocker
https://github.com/crnvl96/lazydocker.nvim
https://www.lazyvim.org/keymaps

opts/ config

プラグインが用意している設定を行いたい場合にoptsもしくはconfigを使用します。
config = trueとするとopts={}と同様の設定内容になります。

最終的なファイル構造

$ tree /home/user/.config/

├── nvim
│   ├── lua
│   │   ├── config
│   │   │   ├── autocmds.lua
│   │   │   ├── keymaps.lua
│   │   │   ├── lazy.lua
│   │   │   └── options.lua
│   │   └── plugins
│   │   │   ├── hex.lua # newfile
│   │   │   ├── lazydocker.lua # newfile
│   │       └── example.lua
│   └── init.lua

終わり

皆さんの環境に合わせて使用いただけると幸いです。

参考文献

https://zenn.dev/siteyo/articles/980b6205e93914

Discussion