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