プラグインtiny-code-action.nvimの使い方

NeovimでCode Actionを実行するときに便利なプラグインtiny-code-action.nvimを紹介します。

tiny-code-action.nvimとは

tiny-code-action.nvimは「Code Actionによる変更の差分」を確認しつつ絞り込み・実行できるプラグインです。

tiny-code-action.nvimの実行例

絞り込みのUIはNeovimビルトインのvim.ui.selectが使えるほか、次のプラグインにも対応しています。

差分の表示はdeltaにも対応しているようです。

フィルター機能が便利

さらにうれしいのが、Code Actionの種類や名前でフィルターできる点です。

よく実行するCode Actionがあるならそれ用にキーバインドを設定しておけます。

導入方法

リポジトリ名だけコピペしたい人向け
rachartier/tiny-code-action.nvim

各々が使っているプラグインマネージャーでインストールします。

依存プラグイン

plenary.nvimに依存しています。

インストール

lazy.nvimだと次のように書いてインストールできます。

lazy.nvimの例
---@module "lazy"
---@type LazyPluginSpec
return {
"rachartier/tiny-code-action.nvim",
dependencies = {
{"nvim-lua/plenary.nvim"},
},
opts = {},
}

最低限の設定

最低限のプラグインの設定はsetupを呼び出すだけで完了です。

require("tiny-code-action").setup({})

lazy.nvimの場合、setupの中身はoptsに書くためこの記述は不要です。この書き方について知りたい人は別の記事「lazy.nvimの使い方から起動を爆速にする方法までを解説」を読んでください。

lazy.nvimでの遅延読み込み

lazy.nvimでの遅延読み込みの例も載せておきます。公式ドキュメントにはevent = "LspAttach"が紹介されています。

筆者は次のようにkeysでキーマップを設定しつつ遅延読み込みさせています。

return {
"rachartier/tiny-code-action.nvim",
dependencies = {
{"nvim-lua/plenary.nvim"},
},
keys = {
{
"gra",
function()
require("tiny-code-action").code_action({})
end,
mode = { "n", "v" },
desc = "Code Actions",
},
},
opts = {},
}

NeovimのビルトインのCode Actionのキーマップがgraなので筆者はそれを上書きする形にしてます。

実行方法

次のAPIを呼び出すことでカーソル行に応じたCode Actionの一覧が表示されます。

require("tiny-code-action").code_action({})

<CR>などで選択すればそのアクションが実行されます。

カスタマイズ

カスタマイズを紹介します。

snacks.nvimを使う

snacks.nvimを使う場合、pickerの第1引数にsnacksを指定します。

return {
"rachartier/tiny-code-action.nvim",
dependencies = {
{ "nvim-lua/plenary.nvim" },
{ "folke/snacks.nvim" },
},
opts = {
picker = {
"snacks",
opts = {},
},
},
}

フィルター機能でよく使うアクションだけを絞って実行するには、引数のfiltersを書きます。

require("tiny-code-action").code_action({ filters = { str = "Use import type" } })

他にもkindclientでフィルタリングできるようです。


以上、tiny-code-action.nvimの紹介でした。Code Actionの種類によってアイコンが変わるのも結構好きです。

tinyという名前で気づくかもしれませんがtiny-inline-diagnostic.nvimを作ったrachartierさんが作者です。