如何在 .vimrc 中映射 ALT 键?

如何在 .vimrc 中映射 ALT 键?

为了能够在不进入插入模式的情况下添加空行,我尝试将ALT-o和映射ALT-Oo<ESC>o<ESC>

我在我的中尝试过以下操作.vimrc

map <M-o> o<ESC>
map <M-O> O<ESC>

map <ALT-o> o<ESC>
map <ALT-O> O<ESC>

和(如下建议)

map <A-o> o<ESC>
map <A-O> O<ESC>

但没有一个起作用。它只是给出通常的行为,就好像ALT-o没有被定义一样。

这是我第一次更改文件.vimrc,我找不到文档告诉您如何指定各种键的位置。但我可以.vimrc通过包含以下内容来验证我的文件是否正在被读取:

map <Enter> ihello<ESC>

这成功映射<Enter>到插入hello并返回命令模式。

我正在使用 vim 和 cygwin。

答案1

要查看按某个键时终端发送的内容,请切换到插入模式,按Ctrl+V,然后按 键。大多数终端的大多数键都会发送一个转义序列,其中只有第一个字符是控制字符;Ctrl+V按字面意思插入下一个字符,因此您可以以这种方式插入整个转义序列。

不同的终端针对某些组合键发送不同的转义序列。许多终端^OCtrl+O和发送相同的字符 ( ) Ctrl+Shift+O;如果是这样的话,Vim 将无法区分它们。

您提到您正在使用 Cygwin;您在哪个终端运行 Vim 是最相关的信息。如果您使用的是本机 Windows 控制台,请为自己准备一个更好的终端。我建议明TTY用于在 X 之外的 Windows 终端中运行 Cygwin 文本模式应用程序,但 Cygwin 的 Windows 原生 RXVT 和PuTTY 赛格也都不错。 (还控制台2运行 Windows 控制台应用程序,但这完全是题外话)。

答案2

如果Control+V后面跟着ALT-x显示^[x(在终端中输入),您可以使用这个小脚本来修复它vim.wikia.com:

for i in range(97,122)
  let c = nr2char(i)
  exec "map \e".c." <M-".c.">"
  exec "map! \e".c." <M-".c.">"
endfor

添加到 .vimrc 以获取所有 alt 键映射。

答案3

这适用于 Ubuntu 16.04 xfce 终端(和 alacritty rust 终端)

将 ultisnip 片段触发器设置为Meta-/(就像 emacs 片段一样)

let g:UltiSnipsExpandTrigger="^[/"

现在我输入^[/vim

在插入模式下Ctrl-V Alt-/

MetaAlt我电脑键盘上的键)

答案4

M(eta) 键是窗口按钮。这只是<A-o>

相关内容