如何解决Vim是否不使用方向键或hl键从括号/括号中移出?
我对vim的自动完成功能为C ++代码插入了以下内容:
if( ){
}
在()
里面是我的光标所在的位置。假设我要输入
if(X[i] == 0){
}
我将键入X
,然后键入[
,然后将自动插入右括号]
。
然后,我键入i
,现在光标位于i
和结束]
之间。我该如何下功夫,以便继续输入其余的== 0
部分?
如果if语句没有自动完成功能,那将很容易,因为我不必担心( )
。我可以只键入if
,(
,X[i]
。要摆脱括号,我只需要使用append A
,然后继续输入其余内容:== 0 )
。
通常,我会使用箭头键或hl移出括号。还有另一种方法吗?
解决方法
您的问题有几个部分,而插件可以解决它们-您当然可以重新实现它们...
关于自动配对,大多数(全部?)包围插件都可以通过点击相关键来跳过右括号字符。例如,在这里您可以简单地键入]
而不是<right>
或<esc>la
,就像没有自动配对功能一样。
注意:与大多数可以从1990年代的vi技巧复制粘贴的解决方案相反,该插件将允许在出现方括号的地方重做(:h .
)插入。
我很确定here和/或在vi.SE上已经给出了确切的技术解决方案。
您还没有提到另一个问题:跳转到与if
的真实分支相对应的大括号之间。为此,我们依靠占位符。可以通过片段插件或非常高级的缩写将其插入。
时髦的代码片段插件具有离散的占位符。我要维护的插件具有更多侵入性占位符(lh-cpp,mu-template。我的bracketing plugin也默认插入的占位符。这意味着什么呢?这意味着键入if
或[
将插入相同的占位符,这些占位符也用作跳转点。因此,我可以使用相同的跳转键绑定(在终端vim中默认为CTRL + J)在关闭]
或在{}
之间-当光标位于]
等之前时,击中]
也是有效的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。