在插入模式下如何移动光标而不用箭头键 - 使用vim

10

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

someFunction()

当光标在 () 之间处于插入模式时,接下来我只需要输入 ;

someFunction();

按下 esc 键结束操作。按右箭头键可能是最简单的方法,但开始感觉笨拙并且需要太多时间来完成该操作。此外,有些人禁用箭头键以养成不使用它们的习惯。在这种情况下,有比按下 escshift-A 更快的方法吗?

5个回答

15

我认为 Control-oaescshift-A 和右箭头键更快。 通过 Control-o,您可以在插入模式下执行一个正常模式按键。


1
好的建议。对于我的情况,应该是ctrl-o和a而不是i。 - koen

9
为什么你的光标会处于 () 之间?如果你已经输入了右括号,它不应该在右括号后面吗?
如果是通过 vim 插件 delimitMate 自动关闭的,你需要继续键入右括号 ) 即使插件已经为你自动完成。插件会察觉到你正在关闭括号对,并将你的光标移动到自动关闭的右括号 ) 后面。

我得到了几个不错的建议。我选择了这个,因为它似乎最容易,但我也会尝试其他建议,以便更好地了解并学习更多。 - koen

3
在你描述的这种情况下,最快的方法就是像你发现的那样,在插入模式下使用<right>键。但这种方法违反了 Vim 的方式,并破坏了以下 Vim 的特性:
- 重做或.命令。我发现通常最好改变你的工作流程以确保.命令能够正常使用。(参见:h .) - 由于其模式,Vim 有一个粗略的撤消。这意味着每个块通常是一个动作,并使撤消状态之间的导航变得更加容易。在许多情况下,使用<right>将破坏撤消。
Vimmers经常切换模式,因此习惯于在它们之间切换。通常从插入模式切换到正常模式是一件好事,因为插入模式适用于短暂的爆发。
一些告别的思考:
- 学会喜欢<esc> - 插入模式适用于短暂的文本 - 正常模式被称为正常模式,因为这是你通常所处的模式 - 你对 Vim 的问题在于你不理解 vi。 - 如果这是一个常见的问题,则可以创建映射或缩写 - Tim Pope 的 Surround.vim 插件或某种自动配对插件可能有助于括号匹配 - 与 Vim 搭配使用,而不是反对它。也就是说:磨练技能

3
自动关闭不会保存按键,因此,如果您不打算在它们之间放置任何内容(至少现在不打算),请勿自动关闭括号。
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

这是值得思考的事情。我喜欢所呈现的事实。我会尝试感受它在实践中的运作。 - koen

2

说到行末的分号问题...可能会有人讨厌我,但我还是要说:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接