如何在Vim中仅替换整个单词匹配?

15

代码示例:

for file in files:
  do_something(root+file)

我想将file替换为f,但必须保留files

通常我使用以下命令:

:%s/file/f/gcI

但它也匹配 files。有没有办法仅匹配整个单词,并适用于(根+文件)语法?

2个回答

31

使用\<\>匹配单词的开头和结尾:

:%s/\<file\>/f/gcI

3
\<\>不是vim特有的东西,它们是常用的正则表达式符号,用于表示完整单词。 - Jeffrey Jose
\<\>在Perl兼容的正则表达式中无效。您可以使用\b代替(单词边界)。请参阅perldoc perlre,因为还有Unicode边界,即\b{} - Dacav

-1

这样做可以吗?

%s/\bfile\b/f/gcI


3
不,它不会。在vim正则表达式中,“\b”匹配退格字符。 - Dave Kirby
如果 Vim 支持 Perl 正则表达式,那么它就可以工作。还要阅读::help perl-pattern - Dacav

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