Perl
提供了quotemeta
功能,以及使用\Qlots-of-meta-characters\E
构造包围字符串的可能性,以确保\Q
和{{1}之间的所有字符被解释为文字。
我经常在Vim中搜索充满元字符的字符串。单独逃避每个特殊角色会适得其反。在Vim中有什么类似\E
的东西会让生活更轻松吗?
答案 0 :(得分:4)
您可以使用/\Vstring-to-search
。
有两点需要注意:
\
很特别。您仍然可以通过在其前面放置\
来使用所有正则表达式元字符。\E
等价物。 \V
会影响正则表达式的其余部分。请参阅:help /\V
。
您可以将其与https://stackoverflow.com/a/676619/1848654中答案中的代码结合使用,如下所示:
vnoremap <C-f> "hy/\V<C-r>=substitute(@h,'[\/]','\\&','g')<cr>
这个想法是:
h
:"hy
/
\V
<C-r>
=
<cr>
终止)是:substitute(@h,'[\/]','\\&','g')
h
注册表的内容:@h
\
和\
之前插入/
:substitute(...,'[\/]','\\&','g')