我有一个函数,我想在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所以......我不知道我需要做些什么来减少这个问题。请帮帮我!
感谢您的任何建议。
答案 0 :(得分:5)
映射(尤其是具有第8位设置的 Alt 的组合)容易受到'encoding'
的更改,并且在您稍后修改时可能会中断。
作为一般规则,如果您想要:set encoding=...
,它应该是您.vimrc
文件中的第一件事。