当我用c ++编码时,我希望vim将(
扩展为()<++>
并将光标放在括号中。我这样做是通过在启动时加载的一个文件中添加以下行:
inoremap ( ()<++><Left><Left><Left><Left><Left>
但是,我希望在评论中禁用此绑定,例如
// Inline comment where ( shouldn't become ()<++>
或
/* Comment block where ( shouldn't become ()<++>
*/
我该怎么做?
答案 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>
。