1

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

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

s/hello/b+2/_/    

不起作用。

我需要它来替换不是整个搜索字符串,而只是替换其中的一部分(特别是,除了单词的第一个字符之外,将所有字符都删除)。

4

1 回答 1

8

您通常有两个选择:类似于其他正则表达式引擎零宽度匹配(尽管使用不同的语法):

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

或特定于 vim 的“在此处设置比赛的开始”:

:s/he\zsllo/_/

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

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

:这会捕获应该不变的文本并让替换包含它。

于 2012-08-26T20:23:26.820 回答