我有一个正则表达式,如下:
:%s/pattern/ pattern/gc
如您所见,在替换文本中,我想要最初有八个空格字符。我不想每次都输入八个空格。是否有更优雅的方法来做到这一点?
printf('%*s', 8, '')
:
使用星号“*”代替数字字符串,可以指定字段宽度或精度或两者兼备。在这种情况下,一个数字参数提供了字段宽度。
:%s/pattern/\=printf('%*spattern', 8, '')/gc
:let @a = repeat(' ', 8)
然后,在构建替换命令时,您可以通过CTRL-R + {register-name} 来插入寄存器内容:
:%s/pattern/<C-R>a&/gc
&
在替换字符串中引用了搜索模式。你可以在命令前输入一个数字来重复某些vi命令,例如: 8iA 将插入8个A(因此用空格替换它)。
%g/pattern/>
来解决这个问题而不是使用替换。附言:别忘了接受答案。 - Ingo Karkat