弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?
-
- 帖子: 27
- 注册时间: 2011-02-28 0:27
弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?
困惑阿,GUI的反应到是很快。
- fanhe
- 帖子: 2357
- 注册时间: 2007-03-24 23:45
Re: 弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?
解决方案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
-
- 帖子: 27
- 注册时间: 2011-02-28 0:27
Re: 弱弱地问一下,为啥终端的Ctrl+[和ESC反应要老半天,Ctrl+C马上就好了?
原来如此~~~~ 太感谢了。。。
help中大海捞针太不容易了...
help中大海捞针太不容易了...
