我在 Linux 系统 (arch) 上。我注意到在按下 Esc 键后,在它生效之前会有延迟。这发生在终端内。但奇怪的是,它不会发生在 vim 内,即使 vim 位于终端内。
我正在使用 zsh,尽管我认为这与该问题无关。
有哪些方法可以调试为什么 ESC 注册之前会有延迟?
使用 xmodmap 交换 capslock 和 escape 也不能解决问题,这是有道理的。
答案1
延迟是一个特点。参见ESC消除延误vim
zsh
。
存在这种延迟是因为许多键(箭头键,ALT)依赖它作为转义字符。
因此,每个使用ESC和依赖转义字符的键的程序都可以自行实现延迟。
vim
的一个简单解决方案
vim
是:set esckeys
。但是,这会破坏在插入模式下使用转义的任何序列。另一个解决方案是使用
timeoutlen
和ttimeoutlen
。timeoutlen
用于映射延迟,ttimeoutlen
用于键代码延迟。 我的.vimrc
有:set timeoutlen=1000 ttimeoutlen=0
给出
ttimeoutlen
一个更合理的值(例如 10ms)可能会更合理,尽管我还没有遇到任何问题。[…]
嘚
ZSH 使用
KEYTIMEOUT
参数来确定等待序列中其他字符的时间(以百分之一秒为单位)。默认值为 0.4 秒。# 10ms for key sequences KEYTIMEOUT=1