在iTerm2 / Terminal上的vim中的“M-”绑定不起作用

时间:2011-11-22 04:14:42

标签: vim osx-lion iterm

我注意到iTerm2提供了使用“Option key as + ESC”(或者作为meta,但显然已经过时)的非常方便的功能。

我尝试了它们,并且选项键在Bash(set -o emacs模式)和Emacs中按预期工作,但在Vim中没有。因此,我不能使用任何“M-”绑定。 我发现的是:

  • 如果我将选项设置为“+ ESC”,vim只能理解ESC +键,并且不知道我实际上是指Meta键。
  • 如果我将选项设置为“meta”,则使用“option”修改的键的行为与没有修饰符一样(不知道如何正式测试vim从我正在键入的键组合中理解的内容)。

“M-”映射在MacVim(7.3.53)中完美运行,但这不在控制台之内,不在本问题的范围内。

我对如何使这些映射在Vim,iTerm2或Terminal下工作感兴趣。

我的规格

  • MAC OS X Lion 10.7.2
  • iTerm2 1.0.0.20111020
  • vim @ 7.3.107_0 + python26 [虽然是MacPorts]

2 个答案:

答案 0 :(得分:9)

我已经下载了最新的iTerm2,并尝试使用以下设置查看Vim(i<C-v><M-a>)发送的内容/内容:

  • 选项作为选项:

    Vim打印æ,这在我的法语键盘上是正常的和预期的

  • 选项为Meta:

    Vim待在那儿,等待一些事情发生。什么都没打印。如果按顺序按Option和a,我只需获取a。以某个随机顺序按选项和a可能会打印á,这很奇怪且完全出乎意料。

  • 选项为+ ESC:

    Vim打印^[a,意思是“逃脱角色后跟角色a”。

从这些测试看来,如果没有一些假想的黑魔法,Vim将永远不会收到<M->

如果您坚持使用“Option as + ESC”,您似乎必须将所有自定义<M-something>映射更改为<Esc>something。这可能有用,但它会使用任何非英语语言编写任何类型的散文都是痛苦的。

我的操作:我保留Option键,以便我可以轻松输入œ…«»之类的字符,然后使用<Leader>(映射到,,请参阅{{1} })我的所有自定义映射。

这里的一些人喜欢为插件预留它,并提倡一种更简单,更安全的方法。

:help mapleader

答案 1 :(得分:4)

我将我的选项键作为Normal,并发现Vim将它们视为<T-绑定。因此,例如,我在.vimrc中有这个映射设置,以便在插入模式下移动到单词的结尾:

noremap! <T-Right> <C-o><Right>;