Vim搜索和替换查询

时间:2012-04-23 06:22:45

标签: regex vim

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

:%s/pattern/        pattern/gc

正如您在替换文本中所看到的,我最初想要八个空白字符。我不想每次都打八个白色空格。有更优雅的方式吗?

3 个答案:

答案 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(所以用空格替换)。