2015-06-09 32 views
2

我希望能够保存在vim一个文件,而在插入模式。我想用下面的快捷键:勘定省(:W <cr>)以<leader>瓦特在vim

inoremap <leader>w <Esc>:w<cr> 

虽然快捷方式保存在插入模式下的文件,它留下光标前面的一个点,其中光标是,如果我身体打出来之后 Esc :wEnter。这是一个问题,因为当我使用的快捷方式,每当我在一行结束,它需要我到下一行,我必须再回过头来,我发起的拯救现场。

任何帮助我如何能映射<leader>w当我身体键入了Esc :w其次Enter键序列发生在Vim的确切行为可以理解。

我要补充一点,如果我不是使用下面的键映射,工作的事情正是我想要的:

inoremap <C-s> <esc>:w<CR> 

不过,我想,以避免在同一时间紧迫CTRLs。这是可能有一些问题与<leader>,但我无法弄清楚它是(我使用,作为我的领导键)什么。

回答

7

尽管可以讨论插入模式映射的适用性,但问题的根本原因是映射定义中的尾部空格:;即Vim如下读取:

inoremap <leader>w <Esc>:w<cr><Space> 

你甚至会在:imap <Leader>w输出中看到这个! <Space>在正常模式中的一个光标前进到右侧(如l);这解释了意想不到的举动。

0

为什么不能简单地做

inoremap <leader>w <Esc>h:w<cr> 

(没有额外h为要回一个字符)?

3

尝试此代替:

inoremap <silent> <leader>w <C-o>:w<CR> 

的想法是Ctrl键 - ø可用于直接从插入模式运行命令。详情请参阅:help i_CTRL-O