以下映射不起作用:
noremap <A-ö> :do something
<A-j>
我使用 xterm(在 Ubuntu 上)和像work这样的映射。ö单独映射是可能的,但同样<C-ö>
不起作用。
我试过的:
set encoding=utf-8
在 .vimrc 开头添加noremap <M-ö>
Ctrl+v后跟Alt+ö在插入模式下打印 ö。
有没有办法解决这个问题?
我正在使用 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插件结合使用。
它不应该干扰写德语,因为据我所知,没有两个连续变音符号的单词。不过,芬兰人可能会遇到困难。
这似乎是不可能的,因为Ctrl您获得了 ASCII 控制字符,这些字符被定义为具有 X-64 的代码,其中 X 是您使用控制按的字符(Ctrl-A是 65 - 64 = 1 = ASCII SOH 等等)。但是没有 'Ö' 的 ASCII 码可以减去。
Alt 有一个类似的方案,IIRC 正在添加一些偏移量,例如 128。Alt由于同样的原因,映射-Ö 将失败。
这不能回答您的问题(在 .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。