在vim中查找和替换整个单词

66

要在vim中查找和替换所有单词的实例,我使用:

%s/word/newword/g

我该如何修改这个代码,使其只匹配整个单词而非单词的一部分?


可能是在vim中搜索单词?的重复问题。 - Nathan Fellman
3个回答

122
你可以使用 \< 匹配单词的开头,使用 \> 匹配单词的结尾:
%s/\<word\>/newword/g

2
那个有效。那是正则表达式语法,还是仅在vim中有效? - neuromancer
6
这是 Vim 特定的正则表达式语法。例如,Perl(PCRE)使用 \b...\b。 - Mikael S
2
很遗憾,Vim不支持\b...\b。 - Cam Song
1
您可以通过使用“perldo”命令访问perl,在Vim中使用PRCE表达式。 :perldo s/\bword/newword/g - user3751385
有没有快捷方式可以快速输入 \<\> - pplorins
1
@pplorins 使用 魔法星 首先搜索整个单词,然后通过输入 :%s/<Ctrl-R>/ 将整个单词搜索模式放入命令行中。 - Douglas Royds

20

对于区分大小写的替换,您可以使用"\C"。

:%s/\<word\>\C/newword/g

它仅替换“word”为newword,而将其他的诸如Word、WORD等保持不变。


为什么需要 \C,当可以使用以下命令完成: :%s/<word>/newword/g。 请强调使用 \C 的重要性。 - frp farhan
1
只有在需要区分大小写的搜索时才需要使用C语言。 - Naga Kiran
你最好使用 i 忽略大小写或 I 不忽略大小写 flags,例如::%s/\<word\>/newword/gI - Douglas Royds

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接