Vimで大量のファイルの特定の文字列の下に行をペーストする
大量のファイルに存在する特定の文字列の下に数行のコードをペーストするタスクがあり、Vimで簡単にできたのでメモ。
検索
特定の文字列を検索するのは、 :grep
を使った。
ripgrepを愛用しているので、以下のように使用するプログラムを変更している。
set grepprg=rg\ --vimgrep\ --no-heading
set grepformat=%f:%l:%c:%m,%f:%l:%m
QuickFix
検索結果はquickfixリストとして出力される。
それらの行の下にペーストしたい。
これにはquickfixリストやlocationリスト中のバッファに対してコマンドを実行する:cdo
を使った。
:cdo normal p
ペーストする行はあらかじめyunkしてあるため、ノーマルモードのp
を実行することでquickfixリストの全行に対象の行がペーストされる。
簡単にできたが、対象ファイルの量によって割と時間かかるかもしれない。今回は100個くらいだったので1分かからないくらいだったと思う。
もし何か質問やフィードバックがありましたら、 @biosugar0 までお願いします。
2021-01-22