vim 在不离开插入模式的情况下向右移动一个位置的快捷方式

vim shortcut to move right one position without leaving insertion mode

我真的很喜欢不需要离开打字位置并使用 vim 完成所有事情的想法。但是我发现自己在某些时候不得不使用右箭头。

if (boolean)

我经常发现自己这样做,完成括号内的表达式后,我必须做 <Esc>la 移动到行尾或 <right arrow><shift><4>a

是否有任何技巧可以在插入模式下执行与右箭头相同的操作而无需移动那么远?

我正在考虑将该组合映射到大写锁定。但是有没有更优雅的方式呢?

您可以在插入模式下使用 CTRL+O 到 运行 任何普通模式命令,然后您将返回再次进入插入模式。


对于向上和向下箭头键,它们在插入模式下已经具有默认快捷方式:

: CTRL+G K

向下 : CTRL+G J

我的 vimrc 中有这个:

inoremap <c-l> <esc>%%a

将您带到当前括号对的右侧,并保持插入模式。

foo(bar(bla(whateverI)))  "I is cursor, type Ctrl-l
foo(bar(bla(whatever)I))  

我用auto-pairs plugin.

除了所有的货币对之外,击中收盘货币对会将光标移到它后面:

input : if (boolean|) (press ) at |)
output: if (boolean)|

input : function({ foo: 'bar'| }) (press } at |)
output: function({ foo: 'bar' }|) (press ) at |)
final : function({ foo: 'bar' })|

大多数括号插件提供了一种方法来移动到下一个右括号字符的结尾。通常,在这里,点击 ) 就足够了。一些旧插件曾经独立于括号对使用 CTRL+J

如果您使用包围插件,请阅读文档。如果您使用一个片段插件来填充您的控制语句,它还应该提供一种方法来直接跳转到下一个占位符(这里是与 if 关联的操作),如果片段被正确定义的话。大多数插件使用 tab,我的默认使用 <c-j><M_del>

如果您有插入控制语句的缩写,那么,您缺少我们十多年前在更先进的插件中定义的内容。自动平衡括号可以很好地避免愚蠢的错误,但是如果没有办法在右括号之后进行处理,使用 PITA 确实会适得其反。

PS:顺便说一句,有时键盘的效率要求我们充分利用它,即我们有箭头键等待使用。