&引用;M-“;iTerm2/终端don和x27上vim中的绑定;行不通

&引用;M-“;iTerm2/终端don和x27上vim中的绑定;行不通,vim,osx-lion,iterm,Vim,Osx Lion,Iterm,我注意到它提供了使用“optionkey as+ESC”(或者作为meta,但显然已经过时)的非常方便的特性 我尝试了这两种方式,选项键在Bash(set-o emacsmode)和emacs中都能正常工作,但在Vim中不能。因此,我不能使用任何“M-”绑定。 我发现: 若我将选项设置为“+ESC”,vim只理解ESC+键,不知道我实际上指的是元键 如果我将option设置为“meta”,那么使用“option”修改的键的行为就像没有修改器一样(不知道如何正式测试vim从我输入的键组合中理解的

我注意到它提供了使用“optionkey as+ESC”(或者作为meta,但显然已经过时)的非常方便的特性

我尝试了这两种方式,选项键在Bash(
set-o emacs
mode)和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+蟒蛇26[通过MacPorts]

我已下载了最新的iTerm2,并尝试通过以下设置查看它发送到的内容/Vim(
I
)打印的内容:

  • 选项作为选项:

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

  • 选项作为元:

    维姆呆在那里,等待着什么事情发生。没有打印任何内容。如果我依次按下Option和
    a
    ,我只会得到
    a
    。按Option和
    a
    的随机顺序可能会打印
    a
    ,这很奇怪,完全出乎意料

  • 选项as+ESC:

    Vim打印
    ^[a
    ,意思是“转义字符后跟字符a”

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

如果您坚持使用“Option as+ESC”,那么您似乎必须将所有自定义的
映射更改为
某个东西。这可能会起作用,但这会使用任何非英语语言编写任何类型的散文都成为一种痛苦

我要做的是:我保留选项键的原样,这样我可以轻松地键入像
œ…«»
这样的字符,并且我使用
(映射到
,请参见
:help mapleader
)来进行所有自定义映射

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

inoremap <leader>, <C-x><C-o> "my way (copied elsewhere)
inoremap ,, <C-x><C-o>        "another way
inoremap,“我的方式(复制到别处)
inoremap,,“另一种方式

我留下了我的选项键来正常工作,发现Vim精确地将它们视为
。Vim从未获得任何类型的
组合。问题是,我使用的几个插件具有
M-
绑定,不方便与插件混淆。也许有一个Vim补丁可以诱使它转换re快速使用
Esc+键
进入
?我还想映射
这样的东西,来做
Alt+(向上|向下)
在Eclipse中所做的事情(即,将一行或多行移过上面/下面的行)。如果我要映射
Esc+(j | k)
相反,当我退出插入模式并真正按下其中一个移动键时,这将是一件痛苦的事情……你能列出需要
的插件吗?我的
~/.vimrc
中有
nnoremap j
nnoremap k
。Vim不是Eclipse或Notepad++或TextMate:你不能像那样导入所有的习惯。哟我们的肌肉记忆必须经过重新训练才能有效地使用它。这肯定是有代价的。我不确定,请参见
:帮助映射alt键
:看起来Vim在这方面可能有点有限。有时人们使用术语“Meta”的解释非常狭义,意思是“具有高位集的ASCII字符”;然而,更普遍的是“Meta”可以表示使用高位或带有ESC的前缀。我从措辞中假设“Option as Meta”特别表示“设置高位”,这与使用UTF-8(或其他8位)编码不兼容。现代终端模拟器通常默认为UTF-8,并要求对“Meta”使用ESC前缀。Mac OS X终端的“option as meta key”选项仅表示“前缀带ESC”。在Mac中有映射“option+char”的解决方案。
noremap! <T-Right> <C-o><Right>;