在vim中将save(:w <cr>)分配给<leader> w

时间:2015-06-09 09:19:21

标签: vim

我希望能够在插入模式下将文件保存在vim中。我想到了使用以下快捷方式:

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

当快捷方式将文件保存在插入模式时,如果我实际键入了键,它会将光标留在光标所在的位置之前一个位置 Esc :w后跟Enter。这是一个问题,因为当我在一行的末尾使用快捷方式时,它会将我带到下一行,然后我必须回到我启动保存的位置。

当我实际输入<leader>w后跟Esc :w键序列时,如何将Enter映射到Vim中发生的确切操作,我们将不胜感激。

我应该补充一点,如果我改为使用以下键映射,那么事情就像我想要的那样:

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

但是,我希望避免同时按CTRLs<leader>可能存在一些问题,但我无法弄清楚它是什么(我使用,作为我的领导键)。

3 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:3)

请改为尝试:

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

想法是 Ctrl - o 可用于直接从插入模式运行命令。有关详细信息,请参阅:help i_CTRL-O

答案 2 :(得分:0)

为什么不简单地做

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

(不是追加一个字符的额外h)?