vim:定义只能在c ++注释之外工作的新命令

时间:2015-09-30 12:28:30

标签: vim

当我用c ++编码时,我希望vim将(扩展为()<++>并将光标放在括号中。我这样做是通过在启动时加载的一个文件中添加以下行:

inoremap (      ()<++><Left><Left><Left><Left><Left>

但是,我希望在评论中禁用此绑定,例如

// Inline comment where ( shouldn't become ()<++>

/* Comment block where ( shouldn't become ()<++>
*/

我该怎么做?

1 个答案:

答案 0 :(得分:3)

安装lh-brackets它已经检测到上下文无法在任何地方展开。它还在结束括号后添加占位符。如果直接安装lh-cpp,控制语句也可以识别上下文。

(我必须承认你的请求是相当令人惊讶的,因为似乎没有人再使用占位符了。然而,lh-bracket是(重新)引入这个概念的插件(从Stephen Riehm的原始包围宏中窃取的想法)。然后{ {3}}使用了类似的括号哲学,最后乳胶套装也做了.BTW,lh-bracket应该与已安装的乳胶套件兼容)

注意:对于那些绝对想要自己定义映射的人,请查看lh-bracket中的mu-template。第一个版本识别注释和字符串上下文以不扩展。最后一个版本(Map4TheseContext())允许指定如何扩展密钥以获取可能的上下文列表 我们的想法是使用synIDattr(synID(line('.'),col('.')-1,1),'name')测试上下文,然后解释可能的特殊字符序列,如<esc>