2012-04-23 119 views
4

我有一个正则表达式是这样的:Vim的搜索和替换查询

:%s/pattern/  pattern/gc 

正如你可以替换文本见我想最初8个空白字符。我不想每次输入八个空格。有没有更好的方法来做到这一点?

回答

3

如果你保存按键后,可以初始化命名寄存器与替换文本:

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

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

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

进一步简化,我已经通过&中提到的替换字符串的搜索模式。

+0

谢谢。对我来说似乎是一个合理的解决方案。我可以将注册初始化代码放在.vimrc中。我需要这个,因为我需要在我的代码中使用8个空格缩进。 – Rakesh 2012-04-23 07:56:34

+0

我曾怀疑过这一点,但我宁愿通过'%g/pattern />'来解决这个问题,而不是替换。 PS:不要忘记接受答案 – 2012-04-23 08:12:19

+0

@RakRaks你的意思是你需要在整个代码中使用8个空格的缩进,而不仅仅是偶尔的8个空格缩进?如果是这样,有更好的方法让vim来帮助你。 – 2012-04-24 02:24:35

3

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

甲字段宽度或精度,或两者,可以通过asterisk '*'代替数字串来指示。在这种情况下,Number参数提供字段宽度。

:%s/pattern/\=printf('%*spattern', 8, '')/gc 
1

,你可以通过输入numberbefore的命令,例如重复一些的vi命令: 8iA 会插入8 A的(所以请更换与空间)。