3

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

我的 .vimrc 有一行内容:

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

然后我启动 gVim,加载文件,点击Alt+o并听到哔声。我尝试在映射中使用大写 O,我尝试在 gVim 中使用和不使用 shift,但它不起作用,我只是听到哔哔声。(我也试过<M-o>。)

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

当我查看输出时,:map无论如何我都没有将 alt 键列为 alt 键,大概是由于第 8 位解释交叉了一些东西。然而我看到的是……

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

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

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

所以似乎第 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 所以......我不知道我需要做些什么来减少它的混乱。请帮帮我!

感谢您的任何建议。

4

1 回答 1

5

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

作为一般规则,如果您愿意:set encoding=...,它应该是您.vimrc文件中的首要内容之一。

于 2012-12-29T02:30:10.067 回答