我想训练自己避免ESC按下按钮退出插入模式。我想用Ctrl+[代替。但是在我把它放在我的 .vimrc 之后
inoremap <ESC> <NOP>
我也不能使用 Ctrl + [ 。我怎样才能解决这个问题?
我想训练自己避免ESC按下按钮退出插入模式。我想用Ctrl+[代替。但是在我把它放在我的 .vimrc 之后
inoremap <ESC> <NOP>
我也不能使用 Ctrl + [ 。我怎样才能解决这个问题?
Vim 无法区分 ESC 和Ctrl-[
. 如果你:h keycode
,你会看到:
notation meaning equivalent decimal value(s) ~
-----------------------------------------------------------------------
<Esc> escape CTRL-[ 27 *escape* *<Esc>*
但是你可以把你的ESC键帽拉出来。:)
在 Vim 中没有办法做到这一点。您必须求助于外部程序,例如仅在 Vim 应用程序内活动的AutoHotkey挂钩。Esc
由于键盘输入在内部处理的方式,不幸的是,这在今天通常是不可能的,即使在 GVIM 中也是如此。某些组合键,如Ctrl+non-alphabetic无法映射,Ctrl+letter与Ctrl++Shift无法letter区分。(除非您的终端为它发送一个不同的termcap代码,而大多数人不会。)在插入或命令行模式下,尝试键入组合键。如果没有任何反应/插入,则不能使用该组合键。这也适用于<Tab>
/ <C-I>
, <CR>
/ <C-M>
/ <Esc>
/<C-[>
等(唯一的例外是<BS>
/ <C-H>
。)这是一个已知的痛点,也是 vim_dev 和 #vim IRC 频道上各种讨论的主题。
一些人(最重要的是 Paul LeoNerd Evans)想要解决这个问题(即使是支持此功能的终端中的控制台 Vim),并提出了各种建议。
但是截至今天,还没有补丁或志愿者出现,尽管许多人表示希望在未来的 Vim 8 主要版本中拥有它。