多くの場合、次のようにvimで検索して置換したい:
:%s/<search_pattern>/<search_pattern>_foo/g
<search_pattern>
置換値で参照できるように、この構文をより効率的にする方法はありますか? グループ名/番号による後方参照に似たものになると思いますが、これに関するドキュメントが見つかりません。
文字を使用&
して、置換で一致したパターンを表します。
:%s/<search_pattern>/&_foo/g
代わりに\0
、一致したパターン全体の後方参照である を使用できるため、覚えやすいかもしれません。
:%s/<search_pattern>/\0_foo/g
見る:help sub-replace-special
また、 @kev のおかげで、 を使用して検索文字列の末尾にある空のパターンを強制的に__foo_\zs
に置き換えることができます。
:%s/<search_pattern>\zs/_foo/g
これは、検索文字列の末尾を __foo_ に置き換えることを意味します。
&
検索パターン全体に使用するか、グループを使用してパターンのセクションに一致させることができます。使用&
:
:%s/<search_pattern>/&_foo/g
これはあなたが探しているものを達成するでしょう。もう少し複雑なものが必要な場合は、グループを使用してください。グループを作成するには、検索パターンの一部を (エスケープされた) 括弧で囲みます。その後、 で参照できます。\n
ここn
で、 はグループ番号です。例はそれをよりよく説明します。
次のファイルがあります。
bread,butter,bread,bread,bread,butter,butter,etc
bread,butter
のインスタンスをに変更したいbread and butter
:
:%s/\(bread\),\(butter\)/\1 and \2/g