tmux和Vim:Escape键被视为^ [并且有很长的延迟

时间:2012-09-07 05:24:12

标签: vim macvim tmux

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

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

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

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:24)

请参阅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

答案 1 :(得分:4)

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

set timeout timeoutlen=1000 ttimeoutlen=100

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