在 iTerm2/终端上的 vim 中的"M-"绑定不起作用



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

我都试过了,选项键在Bash (set -o emacs模式)和Emacs中按预期工作,但在Vim中不行。因此,我不能使用任何"M-"绑定。我发现的是:

  • 如果我将选项设置为"+ESC",vim只理解ESC+键,不知道我实际上是指元键。
  • 如果我设置option为"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 [though MacPorts]

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

  • 选项作为选项:

    Vim打印æ,这是正常的,并期望在我的法语键盘

  • 选项作为Meta:

    Vim停留在那里,等待一些事情发生。没有打印。如果我按Option和a顺序,我只获得a。按任意顺序按Option和a可能会打印出á,这很奇怪,完全出乎意料。

  • 选项为+ESC:

    Vim打印^[a,意思是"转义字符后面跟着字符a"。

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

如果您坚持使用"选项为+ESC",似乎您将不得不将所有自定义<M-something>映射更改为<Esc>something。这可能有用,但它会使用任何非英语语言写任何类型的散文成为一种痛苦。

我所做的:我留下Option键,这样我就可以轻松地键入像œ…«»这样的字符,我使用<Leader>(映射到,,参见:help mapleader)用于所有自定义映射。

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

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere)
inoremap ,, <C-x><C-o>        "another way

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

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

相关内容

  • 没有找到相关文章

最新更新