4

次のような正規表現があります。

:%s/pattern/        pattern/gc

置換テキストでわかるように、最初は 8 つの空白文字が必要です。毎回 8 つの空白を入力したくありません。これを行うよりエレガントな方法はありますか?

4

3 に答える 3

3

使用できますprintf('%*s', 8, '')

asterisk '*'フィールド幅または精度、あるいはその両方は、数字列の代わりに で示される場合があります。この場合、Number 引数はフィールド幅を提供します。

:%s/pattern/\=printf('%*spattern', 8, '')/gc
于 2012-04-23T06:27:19.840 に答える
3

If you're after conserving keystrokes, you can initialize a named register with the replacement text:

:let @a = repeat(' ', 8)

Then, when building your substitution command, you insert the register contents via CTRL-R + {register-name}:

:%s/pattern/<C-R>a&/gc

For further simplification, I have referred to the search pattern in the replacement string via &.

于 2012-04-23T06:50:46.480 に答える
1

コマンドの前に数字を入力することで、いくつかの vi コマンドを繰り返すことができます。

于 2012-04-23T06:29:17.227 に答える