为了能够在不进入插入模式的情况下添加空行,我尝试将ALT-o
和映射ALT-O
到o<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
按字面意思插入下一个字符,因此您可以以这种方式插入整个转义序列。
不同的终端针对某些组合键发送不同的转义序列。许多终端^O
为Ctrl+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-/
(Meta
是Alt
我电脑键盘上的键)
答案4
M(eta) 键是窗口按钮。这只是<A-o>
。