2016-12-01 147 views
1

我想用<leader>e返回從我在任何模式下的正常模式。插入模式我用重新映射Esc鍵在命令行模式Vim的

inoremap <leader>e <esc> 

我想同樣的事情,退出命令行模式,所以我寫了

cnoremap <leader>c <esc> 

但是,當它退出命令行模式時,它會嘗試執行任何通過命令行寫入的內容。但是,當我正常使用<esc>時,它將存在命令行模式而不執行任何操作。我通常不得不按<enter>執行該命令。

任何人都可以幫助我理解這裏發生了什麼,以及我能做些什麼來獲得我想要的行爲。

謝謝!

回答

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>