6

多くの場合、次のようにvimで検索して置換したい:

:%s/<search_pattern>/<search_pattern>_foo/g

<search_pattern>置換値で参照できるように、この構文をより効率的にする方法はありますか? グループ名/番号による後方参照に似たものになると思いますが、これに関するドキュメントが見つかりません。

4

2 に答える 2

13

文字を使用&して、置換で一致したパターンを表します。

:%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_ に置き換えることを意味します。

于 2012-08-16T17:19:12.610 に答える
3

&検索パターン全体に使用するか、グループを使用してパターンのセクションに一致させることができます。使用&:

:%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
于 2012-08-16T17:59:36.590 に答える