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

Cur*_*arn 2 vim

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

inoremap <leader>w <Esc>:w<cr> 
Run Code Online (Sandbox Code Playgroud)

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

任何帮助将不胜感激我如何映射<leader>w到Vim中发生的确切操作,当我实际键入Esc :w后面的Enter键序列.

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

inoremap <C-s> <esc>:w<CR>
Run Code Online (Sandbox Code Playgroud)

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

Ing*_*kat 7

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

inoremap <leader>w <Esc>:w<cr><Space>
Run Code Online (Sandbox Code Playgroud)

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