複数ファイルを一括で書き込めるquicker.nvimの使い方
Neovimのプラグインquicker.nvimの紹介です。
quicker.nvimとは
quicker.nvimはNeovimのquickfixを便利にしてくれるプラグインです。
quickfixが見やすくなる
quickfixの表示が見やすくなります。
- カラムが整列
- signcolumnが非表示
- 行番号のみ(桁番号が非表示)
- シンタックスハイライトが付く
前後の行も表示できる
前後の行の表示もできます。
quickfixでの編集が一括で反映
quickfixで表示されている行をバッファとして編集できます。quickfixのバッファを保存すると、各行の変更がファイルに反映されます。
複数ファイルにまたがった一括置換やq
によるマクロと組み合わせるととんでもなく強力です。
:cdo
などのコマンドでも似たようなことはできます。
一方で、quicker.nvimを使えばバッファとして編集できるため、挿入モードやビジュアルモードなどで柔軟な編集ができます。
インストール方法
依存するプラグインはありません。各自のプラグインマネージャーでインストールできます。
READMEに、いろんなプラグインマネージャーの管理ファイルにコピペできるコードブロックが記載されています。
設定
とりあえず使いたいだけなら次の1行だけで設定は終わりです。
前後の行を表示するキーマップ
前述のとおりquicker.nvimでは前後の行を表示できます。
この切り替えのAPIをキーマップとして登録しておくと便利です。
注意点
※ おま環かもしれません。
bufferline.nvimを入れた状態で大量のファイル(40以上?)を一気に書き込もうとするとエラーになることがあります。bufferline.nvimが大量のバッファを一度にたくさん開く想定では作られていないからだと思われます。
筆者はエラーになったときだけ、いったんbufferline.nvimをオフにして同じ操作をやり直しています。
もう少し調査できたら追記します。
そもそも、どうやってquickfixに送るのか
quickfixを開く方法もちょっと書いておきます。
プラグインなしでやる方法
まずはプラグインを使わないやり方。次のようなコマンドで、grepした結果をquickfixに送って開けます。
プラグインを使ってやる方法
fuzzy finder系のプラグインでは、「絞り込み結果をquickfixに送る」というAPIが用意されていることがあります。こういったプラグインを活用している人はその機能を使ったほうが便利です。
たとえば、telescope.nvimではsend_to_qflist
やopen_qflist
というAPIが用意されています。
上記の設定では、Telescopeで絞り込んでから<C-q>
を押すと「絞り込んだ結果」がquickfixに表示されます。
quickfixの機能と組み合わせる
quickfixの操作を知っておくと便利なのでここでいくつか紹介します。
もう少し絞り込みたい
quickfixのリストをもう少し絞り込みたいときにはcfilter機能を使いましょう。
次のように実行できます。
cfilterプラグインはデフォルトではロードされていないため、上記のようにpackadd
を使って手動でロードします。
:Cfilter /pattern/
のように書けば、指定した正規表現に一致するエントリのみがリストに残ります。
一致しない行を絞り込みたい
指定した正規表現に一致しないエントリを絞り込みたい場合は!
をつけて実行しましょう。
絞り込んだけど元に戻したい
「:Cfilter
で絞り込んだ後、やっぱり元のリストに戻したい」というときは:colder
を使いましょう(c
+older
=古くなるんだなぁ~で覚えられます)。
検索とコマンドの組み合わせで効率UP
検索に関係する操作を覚えておくとquickerでの編集効率が上がるので紹介します。別にquickerに限ったことではないですが。
gn
gn
を入力すると、「最後の検索パターンに一致する次の箇所」がビジュアルモードで選択されます。
これをd
やc
と組み合わせてみましょう。dgn
は、最後の検索パターンに一致する次の箇所を削除します。cgn
は、最後の検索パターンに一致する次の箇所を削除して挿入モードの開始します。
gn
単体でも便利なのですが、「たまに変更したくない箇所もあるけど、きっちり正規表現書くのはだるいな」というときにも便利です。
流れはこうです。/
などで検索後、cgn
で一ヵ所を編集します。n
で次にマッチする箇所へ飛びます。ここで、変更したければ.
でドットリピートします。あとはn.n.nn.n.nnnn
のように移動とドットリピートを繰り返すだけです。
見るよりも実際に手を動かしたほうが分かりやすいです。というか操作感が気持ちいいです。
別の記事Neovimの検索と置換を便利にするには検索や置換関係の設定を書きました。興味があればどうぞ。
この「gn
系コマンドで柔軟にquickfixを書き換えてからquickerで反映する」というのがめちゃくちゃ捗ります。
マクロも使って効率UP
複雑な変更を加えたい場合はマクロq
を組み合わせるのも便利です。この記事にたどり着く皆さんはすでに活用できると思うので割愛します。
以上、quicker.nvimの活用方法でした。
ライブラリのアップデート時、ライブラリ名やプロパティ名などが変わってしまったケースで何度もお世話になっています。
また、以前ブログの画像をR2へ移行した際にimg
タグのsrc
属性を書き換えるときにも大活躍でした。