プラグインtiny-code-action.nvimの使い方
NeovimでCode Actionを実行するときに便利なプラグインtiny-code-action.nvimを紹介します。
tiny-code-action.nvimとは
tiny-code-action.nvimは「Code Actionによる変更の差分」を確認しつつ絞り込み・実行できるプラグインです。

絞り込みのUIはNeovimビルトインのvim.ui.selectが使えるほか、次のプラグインにも対応しています。
差分の表示はdeltaにも対応しているようです。
フィルター機能が便利
さらにうれしいのが、Code Actionの種類や名前でフィルターできる点です。
よく実行するCode Actionがあるならそれ用にキーバインドを設定しておけます。
導入方法
rachartier/tiny-code-action.nvim各々が使っているプラグインマネージャーでインストールします。
依存プラグイン
plenary.nvimに依存しています。
インストール
lazy.nvimだと次のように書いてインストールできます。
---@module "lazy"---@type LazyPluginSpecreturn { "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" } })他にもkindやclientでフィルタリングできるようです。
以上、tiny-code-action.nvimの紹介でした。Code Actionの種類によってアイコンが変わるのも結構好きです。
tinyという名前で気づくかもしれませんがtiny-inline-diagnostic.nvimを作ったrachartierさんが作者です。