【问题标题】:Arrow keys in insert mode in vimvim中插入模式下的箭头键
【发布时间】:2020-04-27 21:54:26
【问题描述】:

当我在 vim 中处于插入模式并使用箭头键时,它会发送看起来像字母和回车的内容。例如,按下 它发送:

A

它看起来像 A\n,但我不确定它发送的确切字符/代码。为什么会发生这种情况,有没有办法禁用它?

【问题讨论】:

    标签: macos vim iterm2 iterm


    【解决方案1】:

    终端发送的向上箭头的通常序列是<Esc>OA^[OA^[序列代表<Esc>键,也相当于Ctrl+[。)

    如果您的 Vim 无法将此序列识别为向上箭头,它将最终执行此序列:<Esc> 将离开插入模式并进入正常模式,然后O 在当前行上方插入新行一并进入插入模式,然后插入文字A,因为您将再次处于插入模式。

    您可以通过在插入模式下输入Ctrl+V 后跟向上箭头来确认这确实是您的终端发送 Vim 的顺序。 (插入模式下的Ctrl+V 按字面意思插入下一个字符。)我希望您会看到插入的^[OA 序列。

    然后你可以用:set <Up> 命令检查你的Vim 认为向上箭头的顺序是什么。我希望您会看到类似的内容:

    t_ku  <Up>           ^[OA
    

    t_ku 是与此向上箭头键对应的设置的内部名称。您也可以使用:set termcap 查看与终端相关的所有 Vim 设置,包括特殊键码。)

    如果其中任何一个不符合预期,这可以解释为什么您的 Vim 无法识别向上箭头键。 (另一种解释是 'ttimeoutlen' 设置得太短,但我认为这不太可能。)

    这些设置通常由'term' 设置管理。默认情况下,它是根据你在 Vim 之外的 shell 上的 $TERM 设置的。

    你可以先看看 Vim 认为 'term' 是什么,以及它是从哪里设置的:

    :verbose set term?
      term=screen-256color
            Last set from ~/.vimrc line 100
    

    :verbose 部分要求 Vim 告诉你它是从哪里设置的,所以你会看到你的 vimrc 或你的插件之一是否覆盖了它。如果 Vim 没有显示这些,则意味着它来自 shell 中的 $TERM 变量。

    所以看看$TERM 在 Vim 之外的设置,看看这是否正确。您是否在某处明确设置?它是 shell 的初始化文件之一,还是来自您的终端模拟器本身?

    无论您使用的是 tmux 还是 screen,也可能相关,在这种情况下,您应该仔细检查 $TERM 是否在 inside tmux 或 screen 以及 outside 它。

    希望所有这些提示都能引导您朝着正确的方向解决这个问题。如果您无法弄清楚,请将您的发现作为 cmets 发布在此答案上,我将使用您可以尝试的更具体的修复程序对其进行更新。

    【讨论】:

    • @David542 我很好奇您的发现...您是否最终找到了导致箭头键在插入模式下行为异常的错误配置?到底是什么?我很高兴我的回答似乎有帮助!干杯!
    • 这似乎是正确的,当我尝试这样做时,我的代码也是如此。感谢您的广泛回答:t_kd &lt;Down&gt; ^[OB t_kl &lt;Left&gt; ^[OD t_kr &lt;Right&gt; ^[OC t_ku &lt;Up&gt; ^[OAterm 我得到:term=screen-256color
    【解决方案2】:

    您可能处于 vi 兼容模式。试试:set nocompatible

    如果这使它按您的意愿运行,请将set nocompatible 放在您的 vimrc 文件的顶部以使其默认为该行为。

    【讨论】:

    • @Chritian -- 同样的事情。可能和 iterm2 发送的代码有关?
    • 不确定到底发送了什么,但我知道在我的 linux 系统上,如果我发送:set compatible,那么它会表现出您描述的行为。我相信几年前我有个同事也有同样的问题。我认为这发生在他身上,因为他会使用 vi 别名运行它,这会导致它以 vi 模式打开。
    猜你喜欢
    • 2011-11-30
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    相关资源
    最近更新 更多