按下 Esc 键后延迟

按下 Esc 键后延迟

我在 Linux 系统 (arch) 上。我注意到在按下 Esc 键后,在它生效之前会有延迟。这发生在终端内。但奇怪的是,它不会发生在 vim 内,即使 vim 位于终端内。

我正在使用 zsh,尽管我认为这与该问题无关。

有哪些方法可以调试为什么 ESC 注册之前会有延迟?

使用 xmodmap 交换 capslock 和 escape 也不能解决问题,这是有道理的。

答案1

延迟是一个特点。参见ESC消除延误vimzsh

存在这种延迟是因为许多键(箭头键,ALT)依赖它作为转义字符。

因此,每个使用ESC和依赖转义字符的键的程序都可以自行实现延迟。

vim

的一个简单解决方案vim:set esckeys。但是,这会破坏在插入模式下使用转义的任何序列。

另一个解决方案是使用timeoutlenttimeoutlentimeoutlen用于映射延迟,ttimeoutlen用于键代码延迟。 我的.vimrc有:

set timeoutlen=1000 ttimeoutlen=0

给出ttimeoutlen一个更合理的值(例如 10ms)可能会更合理,尽管我还没有遇到任何问题。

[…]

ZSH 使用KEYTIMEOUT参数来确定等待序列中其他字符的时间(以百分之一秒为单位)。默认值为 0.4 秒。

# 10ms for key sequences
KEYTIMEOUT=1

我相信情况在内部会更加复杂,tmux或者screen因为每个都可以增加自己的延迟。请参阅这个答案这个答案分别。

相关内容