在vimrc中使用或运算符的异常行为

时间:2013-03-06 14:00:52

标签: vim grep

我通常在vim中进行搜索和替换,如下所示:

:%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g

因此,它会查找句号,感叹号,问号或上述任何一个引号和两个空格。它工作正常。

但是当我在我的vimrc中映射这样的时候

map <F4> :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g<CR>

然后按F4我收到此错误消息:

E486: Pattern not found: \([\.!?]|[\.!?]"\)\s\s

由于某种原因,它正在删除管道前面的反斜杠,我不知道为什么。有谁知道如何纠正这种行为?

1 个答案:

答案 0 :(得分:3)

:map ping中,管道符是特殊的。请改用<Bar>

:noremap <F4> :%s/\([\.!?]\<Bar>[\.!?]"\)\s\s/\1text /g<CR>

另外,you should use :noremap;它使映射不受重映射和递归的影响。