繁体   English   中英

使用xterm在.vimrc中映射Alt + umlaut不起作用

[英]Mapping Alt+umlaut in .vimrc using xterm doesn't work

以下映射不起作用:

noremap <A-ö> :do something

我使用xterm(在Ubuntu上)和类似<Aj>映射工作。 可以单独映射ö ,但是<C-ö>也不起作用。

我尝试过的

  • 在.vimrc的开头添加set encoding=utf-8
  • noremap <M-ö>

在插入模式下, Ctrl + v,然后按Alt + ö ,可打印ö。

有没有办法解决这个问题?

这似乎是不可能的,因为使用Ctrl可以获得ASCII控制字符,这些字符被定义为具有X-64的代码,其中X是使用控制按下的字符( Ctrl-A为65-64 = 1 = ASCII SOH,依此类推)。 但是没有可减去的Ö的ASCII码。

IIRC也有类似的Alt方案,而是添加了一些偏移量,例如128。 出于相同原因,映射Alt- Ö将失败。

我正在使用Vim 7.4(Windows上的GUI版本),这对我有用:

" Alt-ö quits in normal mode
nmap <a-char-246> :q<cr>

" Alt-ö inserts an opening curly brace in insert mode
imap <a-char-246> {

246是ö的Unicode编号。 这是其他Unicode编号的表格: Link

我尝试使用Ctrl而不是Alt尝试相同的命令,但是没有成功。


编辑:由于上述解决方案在我当前的Debian系统上不起作用,我选择了不涉及CtrlAlt的解决方案:

" Map the umlauts to be an opening parenthesis/bracket/curly brace
imap öö (
imap ää {
imap üü [

我从这里得到了这个主意。 该映射非常适合编码,特别是与delimitMate插件结合使用时。

据我所知,它不应该干扰德语的写作,因为没有两个连续的变音符号的单词。 芬兰人可能会很难过。

这不能回答您的问题(在.vimrc中重新映射ctrl + umlaut),但是它可以实现您想要的操作。 您可以不在xvi级别上定义键绑定,而可以在XKB级别上定义键绑定。 使用Xorg XKB,您可以定义重定向,在本示例中,我们将CTRL-ö重映射到ESC,以便我们可以方便地在vim中进入普通模式。

在具有德语键盘布局的Xorg下,尝试以下操作:

~/.xkb/keymap/vimremap (根据您的喜好进行调整,但在xkb_symbols行的末尾保留+vim(ctrloe)

xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwertz)" };
    xkb_types     { include "complete"      };
    xkb_compat    { include "complete"      };
    xkb_symbols   { include "pc+de(nodeadkeys)+inet(evdev)+vim(ctrloe)"    };
    xkb_geometry  { include "pc(pc105)"     };
};

~/.xkb/symbols/vim

xkb_symbols "ctrloe" {
  replace key <AC10> {
        type= "LOCAL_EIGHT_LEVEL",
        symbols[Group1]= [      odiaeresis,      Odiaeresis,           doubleacute,   doubleacute],
        actions = [ NoAction(), NoAction(), NoAction(), NoAction(), Redirect(key=<ESC>, clearmods=all)]
  };
};

在这里,我们使用LOCAL_EIGHT_LEVEL,因为此类型将Ctrl映射到Level5。

现在加载此配置(您可以忽略有关某些缺少符号的警告):

xkbcomp -I$HOME/.xkb $HOME/.xkb/keymap/vimremap $DISPLAY

启动xev并检查CTRL-ö是否确实导致ESC。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM