由于其 Alt+ 行为,ESC 键会导致终端出现小延迟

Shr*_*rat 80 vim zsh keyboard tmux gnome-terminal

我的终端设置是带有 vi 绑定的 gnome-terminal + tmux + zsh。

在像 vim 这样的应用程序中,甚至在 zsh 的命令行 vi 编辑模式中,我需要频繁地按下该ESC键,但在此键的效果发生之前有一个小的延迟。参见GNU Screen 使 Vim ESC 键变慢

经过一些实验,我发现击中ESC键和另一个键(比如b)与击中 具有相同的效果Alt+b。我不知道为什么会这样(可能是由于遗留原因,当时没有Alt?我不知道)。无论哪种方式,我都有两把Alt钥匙,我不希望我的ESC钥匙出现这种行为。我已经尝试过C+[,它也有同样的问题。

我不确定谁对此负责,gnome-terminal 或 tmux 还是我的操作系统本身(Ubuntu Natty)。关于如何解决这个问题的任何想法都会很棒。

更新:我在不同的终端(LXTerminal)上检查了没有 tmux 并且那里也存在延迟。

小智 125

这是一个实际的修复。将以下内容添加到.tmux.conf

set -s escape-time 0
Run Code Online (Sandbox Code Playgroud)

如评论中所述:服务器可能需要重新启动。  tmux kill-server杀死服务器;您可能需要重新启动它。或者,您可以tmux通过键入您的 tmux 前缀(默认Ctrl+ B)然后: 输入source-file ~/.tmux.conf.

  • 正如 http://superuser.com/questions/252214/slight-delay-when-switching-modes-in-vim-using-tmux-or-screen/252717#252717 中提到的,我不得不做`tmux kill-server`以使其生效。 (8认同)
  • 厉害了,谢谢!在 vim 中离开插入模式有延迟,并没有真正想到它可能会受到 tmux 的干扰。这成功了 (4认同)
  • 您可以通过使用 `tmux-prefix`(默认为 `Ctrl+b`)后跟 `:` 并输入 `source-file $HOME/.tmux.conf` 在 tmux 中打开命令提示符来重新加载配置文件。 (3认同)

ktf*_*ktf 7

延迟是由可能必须决定是否按下功能键的输入例程引起的。为此,输入例程在读入 ESC 字符时启动一个计时器。在计时器用完之前从输入中读取的字符(假设是十分之一秒)然后被解释为功能键的 ESC 序列,并且这个 ESC 序列将与来自 terminfo 或termcap 数据库(取决于使用的低级例程)。

当然,这对于单独使用 ESC 的应用程序来说很烦人,但我不知道有任何解决方法。

关于你的问题与ESC a=的行为Meta a

并非所有键盘都提供元​​键。作为一种解决方法,通常允许使用在另一个键之前按下的 ESC 键。

  • “并非所有键盘都提供元​​键。作为一种解决方法,通常允许使用在另一个键之前按下的 ESC 键。” 甚至在此之前,ttys 通常只有 7 位数据接口;没有第八个“元位”,所以你必须为元发送一个 ESC。现在 UTF-8 很普遍,所以即使有 8 位连接,你也不能使用 Meta 的高位。 (2认同)