我正试图养成不使用箭头键而只使用hjkl键的习惯。现在我经常发现自己处于以下情况。我刚刚键入了
someFunction()
,游标处于(
和)
之间的插入模式。接下来我只需要输入;
someFunction();
,按esc完成。按下右箭头键可能是最简单的,但开始感觉尴尬,需要太多的时间来完成行动。另外,有些人为了养成不使用方向键的习惯而禁用了方向键。是否有比按esc和shift-A更快的东西,或者在这种情况下,右箭头键最快?
我认为Control-oa比escshift-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>