在终端模式下,我经常使用alt-l之类的东西退出插入模式(同时将光标保持在同一位置)。本质上我非常习惯这种行为作为退出插入模式然后执行后面的命令的方法。
但是,在使用gVim时,alt +(某些字符)会产生重音字符。从我的搜索中我了解到这可能是由于utf-8编码或其他原因造成的。我不太关心重音字符,所以我不需要utf-8编码。有没有办法让(M-l)表现得像l,它在终端模式下的工作方式?
编辑:按照建议重新映射到(字符),我知道在我的.vimrc中有这个。这样做。
if has('gui_running')
:set guioptions -=m
:inoremap <M-l> <Esc>l
:inoremap <M-j> <Esc>j
:inoremap <M-k> <Esc>k
:inoremap <M-h> <Esc>h
endif
:set guioptions -=m
只是让菜单消失,以便按Alt-h执行我想要的操作而不是关闭帮助菜单。
答案 0 :(得分:2)
您的终端最有可能将Alt解释为Esc。
在CLI Vim中,Alt + l因此实际上是Esc + l:它从插入模式退出并将光标向右移动一个字符。
基本上,你养成了围绕Vim限制的习惯。
在GUI Vim中,Alt + l实际上是Alt + l:它在键盘布局中插入通常与该键组合相关联的特殊字符。在这台Mac上,我得到¬
并将某些内容映射到<A-l>
根本不起作用。
Alt键处理是一种常见的抱怨,但AFAIK没有防弹方法来进行适当的跨平台和工作<A-character>
映射。
你可以通过这个简单的映射在GVim中获得所需的行为(在这台机器上使用Alt + l的输出,点击Alt + l来插入正确的字形):
inoremap ¬ <Esc>l
但这听起来不是一个好策略。
我实际上从未试图在Linux或Windows上的GVim中进行Alt映射,因此YMMV。