在Windows上映射Vim中的alt键

das*_*ang 3 windows vim

我有一个函数,我想在Windows上的gVim中映射到Alt+ o(在Win7-x64上7.3.46 32位Bram @KIBAALE Big版本)并且它......不起作用.

我的.vimrc有一行内容如下:

nnoremap <A-o> :call SplitRelatedFile()<CR>
Run Code Online (Sandbox Code Playgroud)

然后我启动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>
Run Code Online (Sandbox Code Playgroud)

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

n  ï           * :call SplitRelatedFile()<CR>
n  <ef>        * :call SplitRelatedFile()<CR>
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

谢谢你的建议.

Ing*_*kat 5

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

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