ESC 键由于其 Alt+ 行为而导致终端出现轻微延迟

ESC 键由于其 Alt+ 行为而导致终端出现轻微延迟

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

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

经过一些实验,我发现按下ESC键并立即按下另一个键(例如b)与按下 具有相同的效果Alt+b。我不知道为什么会出现这种情况(可能是因为没有 的遗留原因Alt?我不知道)。不管怎样,我有两把Alt钥匙,我不希望我的ESC钥匙出现这种行为。我已经尝试过C+[,也有同样的问题。

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

更新:我在另一个终端(LXTerminal)上没有使用 tmux 进行了检查,那里也存在延迟。

答案1

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

set -s escape-time 0

正如评论中提到的:服务器可能需要重新启动。  tmux kill-server杀死服务器;您可能需要重新启动它。或者,您可以tmux通过键入 tmux 前缀(默认Ctrl+ B),然后从命令提示符中重新加载配置文件: 并进入source-file ~/.tmux.conf.

答案2

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

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

ESC a关于您对=行为的问题Meta a

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

答案3

虽然这可能无法直接解决您的问题,但我发现可以使用它<Ctrl> c退出插入模式。这也可以用于退出 tmux 的屏幕滚动(可以使用调用<leader> PgUP

相关内容