我注意到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>;