在命令行模式下为Vim重新映射Esc

时间:2016-12-01 21:14:40

标签: vim

我想使用<leader>e从我所处的任何模式返回正常模式。对于插入模式,我使用

inoremap <leader>e <esc>

我想要退出命令行模式同样的事情,所以我写了

cnoremap <leader>c <esc>

但是,当它退出命令行模式时,它会尝试执行写入命令行之外的任何内容。但是,当我只是正常使用<esc>时,它存在命令行模式而不执行任何操作。我通常必须按<enter>来执行命令。

任何人都可以帮助我了解这里发生的事情,以及我能做些什么来获得我想要的行为。

谢谢!

1 个答案:

答案 0 :(得分:2)

根据帮助:

CTRL-[                      *c_CTRL-[* *c_<Esc>* *c_Esc*
<Esc>       When typed and 'x' not present in 'cpoptions', quit
        Command-line mode without executing.  In macros or when 'x'
        present in 'cpoptions', start entered command.

似乎“在宏中”也适用于映射的右侧(好吧,它不是“打字”)。您可以使用 CTRL-C ,因为它永远不会执行命令:

                            *c_CTRL-C*
CTRL-C      quit command-line without executing

所以就这样做:

cnoremap <leader>c <c-c>