Vim如何搜索硬编码字符串(非正则表达式)?
在Vim中按字符串原样搜索(禁用正则表达式)
嗨,这个场景我太熟悉了——当要搜索的字符串里带.*[]这类正则元字符时,Vim自动把它们解析成正则规则真的超烦!下面给你几个实用的办法,直接让Vim按字面内容匹配:
方法一:用「非常非魔法模式」一键切换
输入搜索前缀/之后,先敲\V,后面跟着的所有字符都会被当作普通字符串处理,正则元字符直接失效。比如要搜字面的foo.bar,直接输入:/\Vfoo.bar这样Vim就只会找完全一致的
foo.bar,不会把.当成任意匹配字符了。方法二:临时/永久修改全局搜索模式
如果你经常需要做字面搜索,可以临时切换默认搜索规则:
在Normal模式下输入:set nomagic,之后所有/搜索都会默认按字面处理。想切回正则模式的话,输入:set magic就行。
要是想让这个设置永久生效,把set nomagic添加到你的~/.vimrc(或~/.vim/vimrc)配置文件里就好。方法三:用命令行做全局字面搜索
要是需要在整个文件里全局搜字面内容,可以用:vimgrep配合\V::vimgrep /\Vyour_target_string/g %这个命令会在当前文件里找出所有匹配的字面内容,结果会放到quickfix列表里,用
:cnext/:cprev就能在匹配结果之间跳转。
小补充:如果只是单个元字符需要转义,也可以在字符前加\(比如搜foo\.bar),但显然\V更省心,尤其是字符串里有多个元字符的时候。
内容的提问来源于stack exchange,提问作者CrazySynthax
相关产品推荐
相关产品推荐

