当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 7 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : vim 映射
帖子发表于 : 2009-11-10 21:45 

注册: 2009-09-28 20:55
帖子: 11
送出感谢: 0 次
接收感谢: 0 次
大家好请问一下,为什么vim 下Alt键,设置了映射(map)不起作用呀


页首
 用户资料  
 
2 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-11-10 22:44 
头像

注册: 2007-12-01 14:56
帖子: 249
送出感谢: 0 次
接收感谢: 0 次
请看下vim的帮助……


页首
 用户资料  
 
3 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-11-10 22:55 
头像

注册: 2009-07-08 17:33
帖子: 264
送出感谢: 0 次
接收感谢: 2
我也有这个问题,map的<C-F9>,在模拟终端下能行,但是在tty下就没有反应了 :em06 不知道是怎么回事。。。


页首
 用户资料  
 
4 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-11-10 23:06 
头像

注册: 2008-03-25 15:49
帖子: 25877
地址: 谁知道?
送出感谢: 8
接收感谢: 10
同问哪。。


页首
 用户资料  
 
5 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-11-10 23:10 
头像

注册: 2007-12-01 14:56
帖子: 249
送出感谢: 0 次
接收感谢: 0 次
引用:
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 convert-meta on

到你的 ~/.inputrc 文件。如果你新建此文件,可能想把:

$include /etc/inputrc

放在第一行,如果此文件在你的系统中存在的话。这样可以保持全局的选项设置。不过,
这可能会使 umlaut 这样的特殊字符的输入有问题。这时,输入字符前用 CTRL-V 前导。

要知道有报告说 convert-meta 使得 UTF-8 locale 的使用有问题。在 xterm 这样的终
端里,可以在 "Main Options" 菜单里随时切换 "metaSendsEscape" 资源,或者终端上
按 Ctrl-LeftClick 也可以;如果你需要给 Vim 之外的其它应用程序发送 ESC,这是最
后应急的方法。


引自vim帮助


页首
 用户资料  
 
6 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-11-12 22:45 

注册: 2009-09-28 20:55
帖子: 11
送出感谢: 0 次
接收感谢: 0 次
十分感谢各位的,帮忙,谢谢用<Esc>+前缀 的方法暂时解决了


页首
 用户资料  
 
7 楼 
 文章标题 : Re: vim 映射
帖子发表于 : 2009-12-05 20:38 

注册: 2009-12-05 20:28
帖子: 1
送出感谢: 0 次
接收感谢: 0 次
根据 vim 手册和 rxvt-unicode 手册,应该用 meta8 选项启动 urxvt 就能解决这个问题。
但是事实上即使设置了 meta8 选项,仍然不起作用。我认为这个应该是 rxvt-unicode 的
一个 bug,但是 Marc Lehmann (rxvt-unicode 的维护者)不认为这是一个 bug。

meta8 选项设置后,M-key 的键码应该等于 key 的键码加上 0x80。但是注意这里没有
说明这个键码是直接返回给应用程序,还是需要先按照 locale encoding 编码之后再发送
给应用程序。

xterm 的处理方式是将加上 0x80 之后的键码按照 locale encoding 重新编码,然后返回
给应用程序,但是 rxvt-unicode 直接将加上 0x80 后的键码返回给了应用程序。

而 vim 似乎只能识别 xterm 的处理方式,这是非常自然的,因为 vim 无法判断一个最高位
置 1 的字节到底是 Meta-key 键码还是中文 utf8 编码。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 7 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 4 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译