[英]Mapping Alt+umlaut in .vimrc using xterm doesn't work
以下映射不起作用:
noremap <A-ö> :do something
我使用xterm(在Ubuntu上)和类似<Aj>
映射工作。 可以单独映射ö ,但是<C-ö>
也不起作用。
我尝试过的
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系统上不起作用,我选择了不涉及Ctrl或Alt的解决方案:
" 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.