【问题标题】:How to efficiently delete text in Vim while in insert mode [closed]如何在插入模式下有效地删除 Vim 中的文本 [关闭]
【发布时间】:2014-07-28 10:10:52
【问题描述】:

使用 Vim,我想在插入模式下有效地删除文本。我可以使用 Backspace 或者我可以使用 CTRL+h。这是什么意思?我应该停止使用 Backspace 并且只使用 CTRL+h 来有效地编辑吗?如果是,那么我应该在我的 .vimrc 中禁用 Backspace 吗(就像我对箭头键所做的那样)?

谢谢。

【问题讨论】:

    标签: vim text-editor vi


    【解决方案1】:

    Vim 是一个模态编辑器。这意味着为正确的任务使用正确的模式是有好处的。

    一般经验法则:

    • 在插入模式下进行快速更正 - 使用退格键(或者 <c-w>
    • 需要删除/更改一个单词或更大的内容,您可能应该跳回正常模式并执行 d 的动作或 c 的动作。
    • 需要删除很多行,然后才可以拆分宏或 ex 命令。例如:g/foo/d

    要记住的几件事:

    • 您只能在插入模式下进行短脉冲。正常模式应被视为您的默认或“正常”模式
    • 使用. 命令使您的更改正常工作通常是一种很好的做法。例如使用 daw>ciw 并通过 . 重复更改
    • Vim 的模态特性使得撤消历史记录变得漂亮而厚实。滥用插入模式会降低撤消历史的用处。

    【讨论】:

    • 很好的答案!我只会添加建议以使切换模式尽可能简单,主要是将 Escape 键移动到非常方便的位置(例如 Caps Lock)。
    【解决方案2】:

    您始终可以使用Ctrl-o 执行单个正常模式命令。例如,如果您开始一个句子,并决定要删除它并重新开始,您可以在插入模式下输入Ctrl-o d(

    老实说,我已经使用 vim 至少 5 年了,我从来没有觉得有必要这样做。我认为 vim 的关键技巧是让进入普通模式变得非常容易。老实说,Esc 有点痛苦,在大多数键盘中都相当遥远。我将 Capslock 重新映射到 Ctrl 以帮助解决这个问题。这使得Ctrl-[ 快​​捷方式很容易进入正常模式。您还可以使用inoremap kj <Esc> 使进入 kj 离开插入模式(您在打字时很少输入 kj,即使使用代码也是如此)。

    最终的解决方案是将 Capslock 重新映射到 Escape。虽然我发现在许多其他程序中将 Capslock 映射到 Ctrl 更有用,因此绑定通常更有用。

    【讨论】:

    • 看看xcape - 它允许您 控制和转义大写锁定(取决于您是组合按下还是单独按下)- 它是真棒!
    • 这是一个非常有趣的工具。我唯一担心的是,当我按下 caplock 准备使用 ctrl 执行快捷方式时,然后改变主意 - 释放 capslock 并发送意外转义会导致问题吗?
    • 如果您在释放之前按住键足够长的时间,它将发出控制权,而不是逃脱。因此,如果您在按下大写字母后改变主意,只需稍等片刻即可释放它(延迟是可配置的)。这听起来可能很复杂,但它确实有效:-)
    • 不,这完全有道理,并且是解决我问题的完美解决方案。看起来像是对我的 linux 设置的一个很好的补充。
    【解决方案3】:

    不,在我看来,如果你犯了一个错误,与按 CTRL-h 相比,简单地按一两次退格键非常容易(并且有效)。这里有一些其他的插入模式快捷键http://usevim.com/2012/12/14/vim-101-insert-mode-shortcuts/,例如 CTRL-w,它会删除光标前的单词。不使用箭头键效率更高,因为没有浪费时间来回移动你的手。退格似乎不是这种情况,因为对于相同的结果,替代方案更复杂(两键组合对一键)。

    :help ins-special-keys

    免责声明:6 个月 Vim 用户

    【讨论】:

      猜你喜欢
      • 2018-06-17
      • 1970-01-01
      • 2011-04-05
      • 2015-04-30
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2016-03-22
      • 2012-09-06
      相关资源
      最近更新 更多