複数のファイルの同一部分を一度に編集するにはどうすればいいでしょうか?

複数のファイルの同一部分を一度に編集するにはどうすればいいでしょうか?

小さな Web サイトを構成する複数の HTML ファイルがあります。ファイルの先頭に数行のコードが重複しており (ただし、異なり<title>ます)、下部にも数行のコードが重複しています。

Jekyllのようなプリコンパイラを使ってレイアウトを使えば、コードを一度変更するだけで済みますが、これではプロジェクトに不要な複雑さが加わってしまう気がします。正規表現を使うこともできます(現在私がやっているのは、DirDo.vim)、これはちょっと面倒です。

では、一連のファイルの同一部分を検出し、それらをすべて一度に編集できるプラグインはありますか? または、私が考えつかなかった他の方法はありますか?

答え1

Vim では、この問題は次の 2 つの部分に分けられます。

  1. 複数のファイルに編集を適用する
  2. 同じ編集を繰り返す

1.については、ディルド:argdoプラグイン。代替としては、組み込みの:bufdo、などがあります。

2. については、任意の Vim コマンド (の組み合わせ) を使用できます。最も強力なのは:substitute、を使用:[range]して行を選択し、正規表現を使用して (ポイントを見つけて) その行のテキストを変更することです。

マクロを記録して、 経由でそれを再適用することもできます:normal! @a。ただし、これが単一行の先頭での単一編集である場合は、 経由の繰り返しで十分です (ただし、単一の編集操作と、がカーソルを行の先頭に配置する:[address]normal! .という事実に制限されます)。:normal

答え2

使用できますCtrlSF.vimすべてのファイルで特定のパターンを検索し、検索結果の周りの部分を同時に編集するには、vim 複数カーソルただし、行を追加または削除することはできないなど、いくつかの制限があります (を参照README.md)。

関連情報