我的终端设置是 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
)