【问题标题】:Vim: <Ctrl-h|j|k|l> for Movement in Insert Mode [closed]Vim:<Ctrl-h|j|k|l> 用于插入模式下的移动 [关闭]
【发布时间】:2011-06-23 13:30:33
【问题描述】:

我对 Vim 还很陌生,我考虑设置它以便我可以使用 Ctrl + 移动键 (H, J , K, L) 用于在插入模式下移动。

两个问题:

  1. .vimrc这个是怎么设置的?
  2. 这是值得推荐的(至少有一点点可观),还是只是简单的“倒退”?

【问题讨论】:

  • 您当然可以这样做,但这不是插入模式的用途。在插入模式下,您应该插入文本。只插入文本,不移动,这是普通模式的工作。我建议您将所有插入模式动作限制为仅一行:对于其他动作,普通模式更方便,但切换到普通模式只是为了移动一个字符/单词对我来说太多了.

标签: vim insert keyboard-shortcuts


【解决方案1】:

您知道插入模式下的 CTRL-O 会为一个正常模式命令临时切换到正常模式吗?所以,CTRL-O j、CTRL-O k 等等。还有 CTRL-O ^ 等等。

【讨论】:

  • +1 to this,从来不知道,普通命令如此强大,你真的只需要使用一个就可以去大多数地方。 “ 2k”会被我大量使用。
【解决方案2】:

您可以通过这些映射实现您想要的:

inoremap <c-k> <up>
inoremap <c-j> <down>
inoremap <c-h> <left>
inoremap <c-l> <right>

我看不出有什么真正的问题,尽管您显然会丢失现有的映射(例如 &lt;c-l&gt; 重绘屏幕。

Vi 纯粹主义者可能会拒绝在浏览文件时保持插入模式的想法,但还有更严重的错误。

【讨论】:

  • 确实是更糟糕的罪过,比如必须按住 Ctrl 才能在文件中移动。
  • 这很好用。我已将 Caps-Lock 键重新映射为 Ctrl。这意味着我可以轻松地将我的小指移动到“a”键左侧 1 厘米,然后在插入模式下使用 H、J、K、L 移动。如果有任何更符合人体工程学的方式在插入模式下移动,我很高兴知道。否则,我不认为人们不应该在插入模式下移动,只是为了“不在插入模式下移动”,或者,这就是普通模式的用途。为什么?为什么不能在插入和普通模式下移动光标? Vim 不应该让你的手指轻松,让你少打字来完成更多工作吗? :)
  • 我还将 映射到切换模式。本质上,我的小指始终保持在 Caps-Lock(即 Ctrl 键)上。
  • 很抱歉对这么老的答案发表评论,但是,在我的终端上,这个解决方案破坏了Shift+Backspace,因为它映射到^H
【解决方案3】:

人们已经告诉过你如何做到这一点,所以我只想回答你问题的第二部分。

我不太明白使用 Vim 而不是使用模式的力量。此设置的主要问题是您将移动能力限制为“任何方向的一个角色”。这不是“错误”,这只是效率低下。 FfTt(向前/向后移动到一个字符)呢? 0$ 怎么样(移动到行首和行尾)?段落/句子运动([]{})呢?去匹配的括号(%)怎么样?等等等等等等。

IMO,最好学会使用普通模式动作的全部力量,而不是将你的移动能力降低到hjkl

【讨论】:

  • 对于它的价值,我完全同意你的看法。当我发布我的答案时,我假设 OP 希望在按&lt;C-l&gt; 肯定比按&lt;ESC&gt;la 更快的情况下使用这种可能性。
  • 我主要希望能够从当前行移到上一行/下一行,但也可以左右移动(使用 Ctrl + home 行移动键)。
  • 当你在 " 或 () 的错误一侧时,使用 ctrl+hjkl 只移动一次字符就可以了
猜你喜欢
  • 2022-06-28
  • 2017-03-14
  • 1970-01-01
  • 2015-07-28
  • 1970-01-01
  • 1970-01-01
  • 2014-11-20
  • 1970-01-01
  • 2018-12-30
相关资源
最近更新 更多