在没有方向键的情况下以插入模式移动光标



我正试图养成不使用箭头键而只使用hjkl键的习惯。现在我经常发现自己处于以下情况。我刚刚键入了

someFunction()

,游标处于()之间的插入模式。接下来我只需要输入;

someFunction();

,按esc完成。按下右箭头键可能是最简单的,但开始感觉尴尬,需要太多的时间来完成行动。另外,有些人为了养成不使用方向键的习惯而禁用了方向键。是否有比按escshift-A更快的东西,或者在这种情况下,右箭头键最快?

我认为Control-oaescshift-A和右箭头键更快。Control-o允许您从插入模式执行一次正常模式按键。

为什么光标在()之间?如果你输入它,它不应该在)之后吗?

如果它是通过vim插件delimitMate自动关闭的,你应该做的是输入),即使插件为你自动完成。插件会注意到你正在关闭括号对,只需将光标移动到自动关闭的)之后。

自动关闭不会保存按键,所以,如果你不打算在它们之间放任何东西(至少现在),不要自动关闭括号。

f       1    f        1    f      1    f      1
fo      2    fo       2    fo     2    fo     2
foo     3    foo      3    foo    3    foo    3
foo(    4    foo()    4    foo()  4    foo()  4
foo()   5    <right>  5    <Esc>  5    <C-o>  5
foo();  6    ;        6    A      6    l      6
                           ;      7    ;      7

在这种情况下,您描述的绝对最快的方法是在插入模式下发现<right>键。这个方法违背了Vim的方式,并且破坏了以下Vim特性:

  • Redo或.命令。我发现最好通常改变你的工作流程,以确保.命令工作。(见:h .)
  • Vim有一个大的撤销,因为它的模式。这意味着每个块通常是一个操作,并且使撤消状态之间的导航更容易一些。在许多情况下,使用<right>将破坏撤销

Vimmers如此频繁地切换模式,以至于在它们之间切换成为第二天性。从插入模式切换到正常模式通常是一件好事,因为插入模式意味着短时间的爆发。

临别赠言:

  • 学会爱<esc>
  • 插入模式是为短突发文本
  • 正常模式之所以被称为正常模式是因为这是你通常处于的模式
  • Vim的问题是你不懂vi。
  • 如果这是一个常见的问题,那么制作一个映射或缩写
  • Tim Pope的Surround。vim插件或一些自动配对插件可以帮助您的括号
  • 与Vim一起工作,而不是反对它。又名:磨锯子

说到行尾的尾随分号…也许人们会因此讨厌我,但我还是把它留在这里:

imap ;; <Esc>A;
map ;; A;<Esc>

最新更新