弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?

Vim、Emacs配置和使用
回复
zldrobit
帖子: 27
注册时间: 2011-02-28 0:27

弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?

#1

帖子 zldrobit » 2011-04-15 2:23

困惑阿,GUI的反应到是很快。
头像
fanhe
帖子: 2357
注册时间: 2007-03-24 23:45

Re: 弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?

#2

帖子 fanhe » 2011-04-15 9:07

1.10 映 射 ALT 键 *:map-alt-keys*

GUI 上,Vim 自己处理 Alt 键,所以用 ALT 键的映射应该总没有问题。但在终端上,
Vim 得到字节的序列,它必须自己判断是不是按了 ALT 键。

Vim 缺省假设按下 ALT 键等于置位输入字符的第 8 位。多数正常的终端如此工作,包括
xterm、aterm 和 rxvt。假如你的 <A-k> 映射不能工作,可能的原因是你的终端用在字
符前加上 ESC 前缀的方法。但是你本来也可能在字符前输入 ESC,这时 Vim 就不知道到
底发生了什么 (只能检查字符间的延迟,但这并不可靠)。

在此文写作时,有些主流的终端,如 gnome-terminal 和 konsole,使用 ESC 前缀。没
有办法让它们用置位第 8 位来代替。Xterm 缺省应该没有问题。Aterm 和 rxvt 启动时
如果使用 "--meta8" 参数也可以如此。你也可以修改资源来达到目的:
"metaSendsEscape"、"eightBitInput" 和 "eightBitOutput"。

Linux 控制台上,可以用 "setmetamode" 命令切换此行为。记住不使用 ESC 前缀可能和
其它程序发生冲突。确保你的 bash 把 "convert-meta" 选项设为 "on",确保 Meta 键
盘绑定仍然工作 (这是缺省的 readline 行为,除非你的系统配置专门作了改变)。为
此,你需要加入这行:
解决方案

代码: 全选

:set timeout timeoutlen=1000 ttimeoutlen=100
zldrobit
帖子: 27
注册时间: 2011-02-28 0:27

Re: 弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?

#3

帖子 zldrobit » 2011-04-15 13:32

原来如此~~~~ 太感谢了。。。

help中大海捞针太不容易了... :em11
回复