4

我有一个像这样的正则表达式:

:%s/pattern/        pattern/gc

正如您在替换文本中看到的那样,我最初需要八个空格字符。我不想每次都输入八个空格。有没有更优雅的方式来做到这一点?

4

3 回答 3

3

您可以使用printf('%*s', 8, '')

字段宽度或精度,或两者都可以用一个asterisk '*'代替数字字符串来表示。在这种情况下,Number 参数提供字段宽度。

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

如果您在保存击键后,您可以使用替换文本初始化命名寄存器:

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

然后,在构建替换命令时,通过 CTRL-R + {register-name} 插入寄存器内容:

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

为了进一步简化,我在替换字符串中通过&.

于 2012-04-23T06:50:46.480 回答
1

您可以通过在命令前输入一个数字来重复一些 vi 命令,例如:8iA 将插入 8 个 A(所以用空格替换它)。

于 2012-04-23T06:29:17.227 回答