VIM双字符无法正常工作

7
我无法在GVIM中成功地使用digraphs。根据这个网站(和VIM wiki),我应该能够通过插入模式下按Ctrl-Km*或Ctrl-Q956来输入mu字符µ。
  • 当我尝试 Ctrl-Km* 时,我得到的是*
  • 当我尝试 Ctrl-Q956 时,我得到的是ÿ
这让我很疯狂……我讨厌在想要输入µ时使用u。我通常使用Alt-0181,但它在VIM中也不起作用!
2个回答

14

除了Ingo的回答外,还要确保你(或你的插件之一)没有重新映射任何键。例如,如果你正在使用UltiSnips,它会在插入模式下重新映射Ctrl-k,因此你尝试的第一种方法不起作用。由于你看到一个字面上的*,我怀疑这就是阻止它工作的原因。

要查看键是否被映射以及它映射自哪里,请输入:

:verbose imap <C-k>

如果已经映射了,您可以将其重新映射到其他内容,或者只需使用Ctrl-q解决方案。

例如,要使Ctrl-y执行内置的双字符函数,请输入:

:inoremap <C-y> <C-k>

要永久生效,请将该行放入您的~/.vimrc文件中(去掉前面的:)。


4
在 UltiSnips 中,您还可以更改触发器。我已将以下内容放入我的 .vimrc 文件中:let g:UltiSnipsExpandTrigger="<tab>"let g:UltiSnipsJumpForwardTrigger="<tab>"let g:UltiSnipsJumpBackwardTrigger="<s-tab>"。这样就不会占用默认的 C-k,并且触发器是一致的。 - Roland Smith

4

:help i_CTRL-V_digit 解释了十进制数字输入仅适用于255及以下的数值。如果要使用这种方法,您必须输入十六进制值03BC。因此,按键操作将是<C-Q>u03bc

双字母符号方法也应该可以工作。您需要同时按下 CtrlK,然后释放两个键,接着单独输入 m*

根据字体不同,Vim可能无法正确显示字符。您可以使用ga来验证其字符代码。

此外,您的编码必须支持该字符。最好使用:set encoding=utf-8


谢谢Ingo,我不知道为什么Ctrl-K m *不起作用,但是Ctrl-Q u0bc非常好用...谢谢! - Erresen
很高兴我能帮到你;其他双字符是否有效?如果没有,请使用“:verbose imap <C-k>”确保该键未被重新映射。 - Ingo Karkat
我现在回家了,在Ubuntu上,vim似乎与我在工作中使用的win7有一点不同。我会在周一进行调整并看看情况如何。再次感谢。 - Erresen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接