3

在终端模式下,我经常使用诸如 alt-l 之类的东西来退出插入模式(同时将光标保持在同一个位置)。本质上,我非常习惯这种行为作为退出插入模式然后执行以下命令的方法。

然而,在使用 gVim 时,alt+(some character) 会产生一个重音字符。从我的搜索中,我了解到这可能是由于 utf-8 编码或其他原因。我不太关心重音字符,所以我不需要 utf-8 编码。有没有办法让 (Ml) 表现得像 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 执行我想要它执行的操作,而不是关闭帮助菜单。

4

1 回答 1

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。

于 2013-09-12T07:40:59.753 回答