【问题标题】:What are ways to reduce mode errors while learning vim?学习vim时有哪些方法可以减少模式错误?
【发布时间】:2011-04-23 23:41:33
【问题描述】:

我在使用 vim 时经常出现模式错误,即我会在普通模式下开始输入文本,或者在插入模式下开始输入命令。我知道随着 vim 的怪癖渗入你的骨头,这会随着时间的推移而消失,但是有什么方法可以加快这个过程吗?

【问题讨论】:

  • 我通常只是在不确定自己处于什么状态的任何时候捣碎 Escape。它从来没有真正伤害过!
  • 我不认为它是重复的。这个问题很具体,另一个比较笼统。

标签: vim text-editor modal-dialog


【解决方案1】:

这是我的 Ned 答案的变体。它在窗口开关上切换(窗口焦点是另一种提供很少视觉反馈的模态行为)。

if v:version >= 700
    set cursorline cursorcolumn
    au WinLeave * set nocursorline nocursorcolumn
    au WinEnter * set cursorline cursorcolumn
    au InsertEnter * set nocursorline nocursorcolumn
    au InsertLeave * set cursorline cursorcolumn
endif

我将它与 zenburn 配色方案一起使用,并且我还关闭了光标闪烁:

if has("gui_running")
    colorscheme zenburn
    set guicursor+=a:blinkon0
endif

【讨论】:

    【解决方案2】:

    切换“Esc”和“Caps Lock”键。

    如果您不小心点击了“Caps Lock”,您将开始输入与您喜欢做的事情无关的命令。如果您是有经验的用户,这很烦人;如果您是初学者,可能很难理解出了什么问题。

    每次您需要按 Esc 键时,您都必须移动整个手并让您的小指触摸 Esc 键,然后再次更换整个手。 一些 Vim 用户会告诉你,一段时间后你会习惯这样做,这没什么大不了的。我认为这个论点不足,因为您几乎可以习惯于在任何地方映射任何键。这是一个效率问题。

    我相信“Esc”的使用频率很高,而“Caps Lock”则很少使用。

    因此切换两者是有意义的,因为它可以防止错误并提高打字速度。

    【讨论】:

      【解决方案3】:

      插入模式应该只是暂时的。正常模式,顾名思义,是编辑任务最喜欢的模式。

      通常,您应该在正常模式下花费更多时间,并且在插入内容后始终按 ESC。

      也许我只是为自己说话,但现在我习惯于假设我一直处于正常模式,而且我几乎从来没有错。

      【讨论】:

        【解决方案4】:

        我在插入模式下使用这些自动命令来突出显示包含光标的整行,而不是在正常模式下:

        if v:version >= 700
          autocmd InsertEnter * set cursorline
          autocmd InsertLeave * set nocursorline
        endif
        

        这提供了有关该模式的更多视觉反馈。

        【讨论】:

        • 如果这还不够,请将set [no]cursorline 替换为colors [desert|default]
        • ooo... 这是个好主意。我认为这方面会有很多变化。 autocmd InsertEnter、InsertLeave 自动命令可以用来触发很多。
        • 我对此投了赞成票并将其选为答案,但由于 cmets 不能包含多行代码块,因此必须将我的变体作为单独的答案发布。谢谢!
        【解决方案5】:

        如果您还没有这样做,您可以使用:set showmode 显示当前模式。在插入模式下,这将在状态栏中显示-- INSERT --

        【讨论】:

        • 我认为这可能是默认配置...我从未见过没有在状态栏中显示当前模式的vim。
        【解决方案6】:

        使用 gvim,在模式之间切换时,光标会从一个块变为垂直条。这至少会给你一点视觉反馈。

        【讨论】:

          【解决方案7】:

          尽量记住始终让 vim 处于正常模式。

          【讨论】:

            猜你喜欢
            • 2013-04-30
            • 2010-10-14
            • 2010-10-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-06-22
            • 1970-01-01
            • 2010-10-03
            相关资源
            最近更新 更多