vimrc中或运算符的异常行为
我通常在vim中执行如下搜索和替换:vimrc中或运算符的异常行为,vim,grep,Vim,Grep,我通常在vim中执行如下搜索和替换: :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g 因此,它会查找句号、感叹号、问号或以上任何一种,后跟引号和两个空格。它很好用 但当我在我的vimrc中这样映射时 map <F4> :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g<CR> 出于某种原因,它正在删除管道前的反斜杠,我不知道为什么。有人知道如何纠正这种行为吗?在:mapping中,管道字符是特殊的。改用: :nore
:%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g
因此,它会查找句号、感叹号、问号或以上任何一种,后跟引号和两个空格。它很好用
但当我在我的vimrc中这样映射时
map <F4> :%s/\([\.!?]\|[\.!?]"\)\s\s/\1text /g<CR>
出于某种原因,它正在删除管道前的反斜杠,我不知道为什么。有人知道如何纠正这种行为吗?在
:map
ping中,管道字符是特殊的。改用
:
:noremap <F4> :%s/\([\.!?]\<Bar>[\.!?]"\)\s\s/\1text /g<CR>
:noremap:%s/\([\.!?]\[\.!?]“\)\s\s/\1text/g
此外,它使映射不受重新映射和递归的影响。在
:map
ping中,管道字符是特殊的。请改用
:
:noremap <F4> :%s/\([\.!?]\<Bar>[\.!?]"\)\s\s/\1text /g<CR>
:noremap:%s/\([\.!?]\[\.!?]“\)\s\s/\1text/g
也,;它使映射不受重新映射和递归的影响。也感谢您提供有关递归的信息。帮我清理vimrc文件。让我们清理正则表达式!匹配的组不需要替换(即
\\\\\
),相反,您可以通过\=
进行操作<代码>\=匹配0或1次,尽可能多(想想Perl的?
)。这使得替换:%s/\([\.!?]“\=\)\s\s/\1text/g
。因为我们没有使用管道符号,
就不需要了。谢谢,我总是想不出明显的答案。也感谢关于递归的信息。帮助我清理了vimrc文件。让我们清理那个正则表达式吧!匹配的组不需要替换(这个\\\\
)相反,你可以通过\=
\=
匹配0到1次,尽可能多的匹配(想想Perl的?
)。这使得替换:%s/\([\.!?]”“\=\)\s\s/\1text/g
。因为我们不使用管道符号,
。谢谢,我总是想不出这个显而易见的答案。