我通常在vim中进行搜索和替换,如下所示:
:%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g
因此,它会查找句号,感叹号,问号或上述任何一个引号和两个空格。它工作正常。
但是当我在我的vimrc中映射这样的时候
map <F4> :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g<CR>
然后按F4我收到此错误消息:
E486: Pattern not found: \([\.!?]|[\.!?]"\)\s\s
由于某种原因,它正在删除管道前面的反斜杠,我不知道为什么。有谁知道如何纠正这种行为?
答案 0 :(得分:3)
在:map
ping中,管道符是特殊的。请改用<Bar>
:
:noremap <F4> :%s/\([\.!?]\<Bar>[\.!?]"\)\s\s/\1text /g<CR>
另外,you should use :noremap
;它使映射不受重映射和递归的影响。