我尝试在我的 .vimrc 中映射左 alt 键和回车键的组合,但是没有成功。
我已将所有这些映射添加到我的 .vimrc 文件中,但没有任何效果:
map <M-esc> itest0<return><esc>
map <M-cr> itest1<return><esc>
map <M-return> itest2<return><esc>
map <M-enter> itest3<return><esc>
map <M-[> itest4<return><esc>
map ^[ itest5<return><esc>
一些信息:
按下Ctrl+v然后按下Alt+后return:
- 在我的终端我得到
^[
- 在 vim (和 gvim)的插入模式下我得到
^[
- 打电话后
sed -n l
我得到:
^[ \033$
我在 Arch Linux 上使用 terminator。无论我使用 vim 还是 gvim,描述的行为都是相同的。我该怎么办?
答案1
由于键盘输入的内部处理方式,遗憾的是,即使在 GVIM 中,这在今天也普遍无法实现。某些组合键(如Ctrl+ 非字母)无法映射,并且无法区分Ctrl+ 字母和Ctrl+ Shift+ 字母。(除非您的终端发送不同的术语表代码,大多数人没有。)在插入或命令行模式下,尝试输入组合键。如果没有任何反应 / 插入,则无法使用该组合键。这也适用于<Tab>
/ <C-I>
、<CR>
/ <C-M>
/ <Esc>
/<C-[>
等。(唯一的例外是<BS>
/ <C-H>
。)同样适用于Alt和非字母键。这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。
有些人(首先是 Paul LeoNerd Evans)想要修复这个问题(即使对于支持该功能的终端中的控制台 Vim),并提出了各种建议,cp。http://groups.google.com/group/vim_dev/browse_thread/thread/626e83fa4588b32a/bfbcb22f37a8a1f8
但截至今天,还没有任何补丁或志愿者提出,尽管许多人表示希望在未来的 Vim 版本中拥有这一点。