繁体   English   中英

Vim映射有什么问题?

[英]What's wrong with this Vim mapping?

在用于初始化某些与TeX相关设置的函数中,我定义了以下映射:

vmap <buffer> ucm :s/^\% //<CR>:nohlsearch<CR>

我希望它可以使我轻松取消视觉选择的行的注释。 类似的:

vmap <buffer> cm :s/^/\% /<CR>:nohlsearch<CR>

在评论方面做得很好。 同样,使用#而不是%的其他语言的类似映射也可以正常工作。 最后的那些看起来像这样:

vmap <buffer> cm :s/^/# /<CR>:nohlsearch<CR>
vmap <buffer> ucm :s/^# //<CR>:nohlsearch<CR>

V 10 j cm V 10 k ucm的序列应该使代码完整无缺。

所以现在:我在做什么错?

您正在添加不必要的内容。

:s/^/% <CR>

:s/^% /<CR>

应该分别用于评论和取消评论。

第三个/用于添加选项,例如/c表示“确认”, /g表示“全局”。 如果您不使用这些选项,则根本不需要此/

在“ uncomment”替换中,您转义了%%本身对于Vim的正则表达式味道没有特殊意义。 如果Vim逃逸了,不仅Vim肯定不会与之匹配,而且\\%<something>用于一堆原子,例如\\%d 因此您的模式失败了,因为Vim偶然发现您的\\%期望原子的其余部分并“一无所获”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM