【问题标题】:vim shortcut to move right one position without leaving insertion modevim 快捷方式在不离开插入模式的情况下向右移动一位
【发布时间】:2017-01-03 11:19:27
【问题描述】:

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

if (boolean)

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

有没有什么技巧可以在插入模式下做与右箭头相同的事情而不必移动那么远?

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

【问题讨论】:

  • <Right><End> 有什么问题?
  • @romainl 使用 vim 的人通常不鼓励使用这些箭头键。
  • <Esc>la<Esc>$a 可以稍微简化为 <Esc>A。在插入模式下移动是非常不受欢迎的,最好的办法是使用箭头键,除非你想要自己的映射。
  • 好吧不鼓励使用箭头键。

标签: vim editor


【解决方案1】:

我的 vimrc 中有这个:

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

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

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

【讨论】:

  • 谢谢!正是我想要的
【解决方案2】:

您可以在插入模式下使用 CTRL+O 来运行任何正常模式的命令,然后您将再次回到插入模式。


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

向上 : CTRL+G K

向下 : CTRL+G J

【讨论】:

  • 我的意思是我最终还是按了 3 个或更多键,对吧?
  • 然后训练你的手指使用箭头键,否则添加一些映射。
【解决方案3】:

大多数括号插件都提供了一种方法(/s)将下一个右括号字符移到末尾。在这里,通常,点击) 就足够了。一些旧插件过去使用 CTRL+J 独立于括号对。

如果您使用括号插件,请阅读文档。如果您使用填充控制语句的 sn-p 插件,如果正确定义了 sn-p,它还应该提供一种直接跳转到下一个占位符(这里是与 if 关联的操作)的方法。大多数插件使用tab,矿井默认使用&lt;c-j&gt;&lt;M_del&gt;

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

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

【讨论】:

    【解决方案4】:

    我使用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' })|
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-03-14
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2011-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多