在Windows上映射Vim中的alt键

时间:2012-12-29 01:47:38

标签: windows vim

我有一个函数,我想在Windows上的gVim中映射到 Alt + o (在Win7上的7.3.46 32位Bram @ KIBAALE Big版本 - x64)而且......不能正常工作。

我的.vimrc有一行显示:

nnoremap <A-o> :call SplitRelatedFile()<CR>

然后我启动gVim,加载文件,点击 Alt + o 并发出一声哔哔声。我尝试在映射中使用大写字母O,我尝试了gVim中的移位和不移位,它只是不起作用,我只是发出哔哔声。 (我也试过<M-o>。)

如果我在终端中加载Vim,它会按预期工作。如果我在gVim的新实例中手动执行上面的行,它也可以按预期工作。只有当它出现在.vimrc中时才会起作用。实际上,它出现在另一个文件中,但我的_vimrc只有一行显示为source x:/path/to/my.vimrc

当我查看:map的输出时,无论如何我都没有将alt键列为alt键,大概是由于第8位解释超过了某些东西。但我所看到的是......

n  <ef>        * :call SplitRelatedFile()<CR>

在我手动运行gVim中的:nnoremap后,我看到了这一点(如果此帖有任何字符翻译问题,第一行显示i-umlaut为关键字):

n  ï           * :call SplitRelatedFile()<CR>
n  <ef>        * :call SplitRelatedFile()<CR>

所以看起来第8位在Vim(GUI)启动的不同点被不同地解释了?值得一提的是,当我在控制台Vim中运行:map时,我也得到了i-umlaut而不是<ef>行(o在ASCII中是0x6F所以如果高则为0xEF bit已设置,因此这非常有意义; i-umlaut似乎是0x8B)。

我尝试了一些不同的 Alt 组合键,但没有一个能够存活到gVim中,所以我很好奇是否有人有任何提示。也许我可以将这些东西以某种方式填入某种类型的“延迟加载”模块,比如本地插件或其他东西?

我可以离开 Alt 键,但我没有功能键,也不想踩踏明显的 Ctrl 键来实现这个功能......我刚刚发现我可以用 Ctrl + v 的结果替换<A-o> Alt + o 这确实有效(因为我在我的vimrc中获得了i-umlaut)但是这不是很好!对这种疯狂的任何想法? (哦,这对于控制台Vim不起作用,我需要在has("gui")返回false时保留 Alt 版本。)

我现在已经注意到gVim和控制台Vim都将i-umlaut报告为0xEF所以......我不知道我需要做些什么来减少这个问题。请帮帮我!

感谢您的任何建议。

1 个答案:

答案 0 :(得分:5)

映射(尤其是具有第8位设置的 Alt 的组合)容易受到'encoding'的更改,并且在您稍后修改时可能会中断。

作为一般规则,如果您想要:set encoding=...,它应该是您.vimrc文件中的第一件事。