3

以下映射不起作用:

noremap <A-ö> :do something

<A-j>我使用 xterm(在 Ubuntu 上)和像work这样的映射。ö单独映射是可能的,但同样<C-ö>不起作用。

我试过的:

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

Ctrl+v后跟Alt+ö在插入模式下打印 ö。

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

4

3 回答 3

3

我正在使用 Vim 7.4(Windows 上的 GUI 版本)并将其放入我的.vimrc作品中:

" 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 数字的表格:Link

我尝试了相同的命令Ctrl而不是Alt没有成功。


编辑:由于上述解决方案不适用于我当前的 Debian 系统,我选择了一个不涉及Ctrlor的解决方案Alt

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

我从这里得到了这个想法。这种映射非常适合编码,尤其是与delimitMate插件结合使用。

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

于 2014-01-27T18:57:30.547 回答
2

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

Alt 有一个类似的方案,IIRC 正在添加一些偏移量,例如 128。Alt由于同样的原因,映射-Ö 将失败。

于 2013-05-25T09:50:06.360 回答
1

这不能回答您的问题(在 .vimrc 中重新映射 ctrl+变音符号),但它可能会实现您想要做的事情。您可以不在 vim 级别,而是在 XKB 级别定义键绑定。使用 Xorg XKB 你可以定义重定向,在这个例子中我们将重新映射 CTRL-ö 到 ESC 以便我们可以方便地在 vim 中进入普通模式。

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

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

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。

于 2016-06-05T20:51:43.377 回答