我希望能够在插入模式下将文件保存在vim中。我想到了使用以下快捷方式:
inoremap <leader>w <Esc>:w<cr>
当快捷方式将文件保存在插入模式时,如果我实际键入了键,它会将光标留在光标所在的位置之前一个位置
Esc :w
后跟Enter
。这是一个问题,因为当我在一行的末尾使用快捷方式时,它会将我带到下一行,然后我必须回到我启动保存的位置。
当我实际输入<leader>w
后跟Esc :w
键序列时,如何将Enter
映射到Vim中发生的确切操作,我们将不胜感激。
我应该补充一点,如果我改为使用以下键映射,那么事情就像我想要的那样:
inoremap <C-s> <esc>:w<CR>
但是,我希望避免同时按CTRL
和s
。 <leader>
可能存在一些问题,但我无法弄清楚它是什么(我使用,
作为我的领导键)。
答案 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
)?