VIM如何用偏移代替

时间:2012-08-26 20:20:45

标签: vim offset substitution

vim中的搜索命令允许您将光标放在相对于搜索结果的位置。例如,/hello/b+2将光标放在第一个l上。

如何使用substitute命令执行此操作?

s/hello/b+2/_/    

不起作用。

我需要这个替换不是整个搜索字符串,而是替换它的一部分(具体来说,除了一个单词的第一个字符之外的所有字符串)。

1 个答案:

答案 0 :(得分:8)

您通常有两个选项:类似于其他正则表达式引擎零宽度匹配(但语法不同):

:s/\(he\)\@<=llo/_/

或vim-specific“在此处设置匹配的开头”:

:s/he\zsllo/_/

。此外,有一种解决方法在几乎所有其他正则表达式引擎中看起来都类似:

:s/\(he\)llo/\1_/

:这会捕获应该保持不变的文本,并使替换包括它。