2

私はその定義を理解するのは正しいですか

:range s[ubstitute]/pattern/string/cgiI

文字列の部分では、実際には文字列のみが使用されることを示唆しています。つまり、パターンは許可されていませんか?私がやりたいのは、位置MにあるN個の記号をX * N記号に置き換えることです。したがって、次のようなものを使用したいと思います。

:%s/^\(.\{10}\).\{28}/\1X\{28}/g

\{28}文字通りに解釈されるため、これは機能しません。

交換部品に28XXXXX... Xを書き込むことが唯一の可能性ですか?

4

3 に答える 3

2

置換部分で許可されている唯一の正規表現構成は、番号付きのグループ\1 \2 \3 などです。繰り返し構成{28}は、賢い考えですが、そこでは有効ではありません。28個のXを使用する必要があります。

于 2012-06-19T13:05:37.273 に答える
2

を介して置換パーツで式を使用できます\=。を介して一致にアクセスsubmatch()し、静的文字列と結合する必要があります。静的文字列は、を介して生成できますrepeat()

:%s/^\(.\{10}\).\{28}/\=submatch(1) . repeat('X',28)/g
于 2012-06-19T14:08:22.610 に答える
1

別の方法は、置換パーツで式を使用することです。

:%s/^\(.\{10}\).\{28}/\=submatch(1).repeat("X",28)/g

最初に一致したグループは。で取得されsubmatch(1)ます。詳細については、を参照してください:h sub-replace-expression

于 2012-06-19T14:07:49.783 に答える