22

在 MacVim 和终端 Vim 中,一切正常,我没有问题。一旦我跳进 tmux 并在那里运行 Vim,escape 键就会开始延迟大约 1 秒,并在 Vim 中显示为^[.

我将按下退出键退出插入模式,但在 Vim 做出反应并将我带回正常模式之前会发生大约 1 秒的延迟。

如果我键入Ctrl+o暂时进入插入模式,它会立即进入正常模式,没有延迟。

如果我键入jj以进入正常模式(我设置的快捷方式),它仍然需要大约一秒钟。这让我认为问题可能出在 Vim 而不是 tmux

我已经set -sg escape-time 0在我的 tmux.conf 中设置了,但它根本没有帮助。

有任何想法吗?

4

2 回答 2

39

请参阅https://unix.stackexchange.com/questions/23138/esc-key-causes-a-small-delay-in-terminal-due-to-its-alt-behavior

问题在于 tmux 转义延迟。下面的 tmux 设置应该更正它:

set -s escape-time 0

于 2012-12-12T15:45:17.437 回答
4

问题是转义是所有功能键、箭头、鼠标点击的第一个字符(它们是由终端使用一些转义序列发送到 vim),……因此 vim 最多等待下一个字符 'ttimeoutlen' ('timeoutlen' 如果'ttimeoutlen' 是 -1) 毫秒,以确保您的意思是按 Escape 而不是,例如,<F1>. 没有办法摆脱这种延迟,但您可以缩小范围:

set timeout timeoutlen=1000 ttimeoutlen=100

. 这样,它将等待 1 秒让您完成映射,但终端只需 0.1 秒即可完成发送转义序列。

于 2012-09-08T12:23:32.967 回答