在 vim 中,我经常想搜索包含需要转义的挑剔字符的字符串。有没有办法可以关闭所有特殊字符的含义,有点像less中的regex-off模式或fgrep?
我正在处理特别多毛的字符串;这是一个例子:
((N/N)/(N/N))/N
无需转义任何字符即可在 vim 中进行搜索将是一个主要的节省时间。
Vim 中的\V 有助于处理一些元字符,但关键不是/或\。
谢谢大家!最后,我将其添加到我的 .vimrc 中:
command! -nargs=1 S let @/ = escape('<args>', '\')
nmap <Leader>S :execute(":S " . input('Regex-off: /'))<CR>
最佳答案
查看您的具体示例,可能最简单的方法(因为\V 在这里无济于事)是使用 ?
而不是 /
: 那么你就不必逃避 /
s:
?((N/N)/(N/N))/N
这将向后搜索而不是向前搜索,但您始终可以在第一次搜索后使用 'N' 而不是 'n' 来向前搜索。或者您可以按
/
后跟向上光标键以自动转义正斜杠。但是,您无法轻松地转义反斜杠。我想你可以这样做:
:let @/ = escape(pattern, '\')
然后使用
n
搜索,但这可能并不容易。我能想到的最好的是::command! -nargs=1 S let @/ = escape('<args>', '\')
然后做:
:S (N)/(N+1)\(N)
n
关于search - vim 中的字符串完全匹配? (就像在less中的 'regex-off'模式。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1550734/