我有一个像这样的正则表达式:
:%s/pattern/ pattern/gc
正如您在替换文本中看到的那样,我最初需要八个空格字符。我不想每次都输入八个空格。有没有更优雅的方式来做到这一点?
您可以使用printf('%*s', 8, '')
:
字段宽度或精度,或两者都可以用一个
asterisk '*'
代替数字字符串来表示。在这种情况下,Number 参数提供字段宽度。
:%s/pattern/\=printf('%*spattern', 8, '')/gc
如果您在保存击键后,您可以使用替换文本初始化命名寄存器:
:let @a = repeat(' ', 8)
然后,在构建替换命令时,通过 CTRL-R + {register-name} 插入寄存器内容:
:%s/pattern/<C-R>a&/gc
为了进一步简化,我在替换字符串中通过&
.
您可以通过在命令前输入一个数字来重复一些 vi 命令,例如:8iA 将插入 8 个 A(所以用空格替换它)。