Regex 什么';这个Vim映射有什么问题?
在我用来初始化某些TeX相关设置的函数中,定义了以下映射:Regex 什么';这个Vim映射有什么问题?,regex,vim,mapping,key-bindings,comments,Regex,Vim,Mapping,Key Bindings,Comments,在我用来初始化某些TeX相关设置的函数中,定义了以下映射: vmap <buffer> ucm :s/^\% //<CR>:nohlsearch<CR> vmap ucm:s/^\%/:nohlsearch 我希望它能让我轻松地取消对所选行的注释。类似的: vmap <buffer> cm :s/^/\% /<CR>:nohlsearch<CR> vmap cm:s/^/\%/:nohlsearch 在评论方面做得很
vmap <buffer> ucm :s/^\% //<CR>:nohlsearch<CR>
vmap ucm:s/^\%/:nohlsearch
我希望它能让我轻松地取消对所选行的注释。类似的:
vmap <buffer> cm :s/^/\% /<CR>:nohlsearch<CR>
vmap cm:s/^/\%/:nohlsearch
在评论方面做得很好。对于其他语言,使用#而不是%的类似映射也可以正常工作。最后一个是这样的:
vmap <buffer> cm :s/^/# /<CR>:nohlsearch<CR>
vmap <buffer> ucm :s/^# //<CR>:nohlsearch<CR>
vmap cm:s/^/#/:nohlsearch
vmap ucm:s/^#/:nohlsearch
V10jcmV10kucm的序列应该使代码保持原样
那么现在:我做错了什么?你在添加不必要的东西
:s/^/% <CR>
:s/^/%
及
:s/^%/
应该分别用于注释和取消注释
第三个/
用于添加选项,例如用于“确认”的/c
,或用于“全局”的/g
。如果不使用这些选项,则根本不需要此/
在“uncomment”替换中,您正在转义
%
,但%
本身对Vim的正则表达式没有特殊意义。如果Vim被转义,不仅它肯定不会匹配它,而且\%
被用于一堆原子,比如\%d
。因此,您的模式失败了,因为Vim偶然发现您的\%
期望原子的其余部分,却“一无所获”。您正在添加不必要的东西
:s/^/% <CR>
:s/^/%
及
:s/^%/
应该分别用于注释和取消注释
第三个/
用于添加选项,例如用于“确认”的/c
,或用于“全局”的/g
。如果不使用这些选项,则根本不需要此/
在“uncomment”替换中,您正在转义%
,但%
本身对Vim的正则表达式没有特殊意义。如果Vim被转义,不仅它肯定不会匹配它,而且\%
被用于一堆原子,比如\%d
。因此,您的模式失败了,因为Vim无意中发现您的\%
期望原子的其余部分而“一无所获”