我想在写完后返回到插入模式(请参阅:else
)
function! SaveOrSaveAsInInsert()
if @% == ""
:browse saveas
else
:w
"//TODO: Return to insert mode
endif
endfunction
在:w<CR>a
中尝试过,但不起作用。
谢谢!
编辑
@Randy Morris,使用startinsert
进行评论。另一方面,:h inserting-ex
说:
注意:这些命令不能用在x:global=或\x:vglobal\\x上。“:附加”和“:在":if”和":endif“、":for”和":endfor“、”时“和”:结束时“之间插入”不正确地工作“。
所以,我的问题是,我是被startinsert
i
的等价物困住了,还是有办法绕过a
的行为?还是我应该坚持使用imap <C-s> <Esc>w<CR>a
而不进行文件名测试?
发布于 2011-06-21 13:24:44
inoremap <expr> <c-s> "\<esc>:" . (@% == "" ? "browse saveas" : "w") . "\<cr>gi"
我使用gi
返回插入模式。并使用表达式映射来确定文件是否已保存。
发布于 2011-06-21 12:40:47
我在我的.vimrc中使用了这个,这样ctrl-s就可以保存并返回到以前的模式中。也许能帮你弄清楚。;-)
" Use CTRL-S for saving, also in Insert mode
noremap <C-S> :update<CR>
vnoremap <C-S> <C-C>:update<CR>
inoremap <C-S> <C-O>:update<CR>
发布于 2011-06-21 13:19:50
让它工作了
:inoremap <silent> <C-S>
<Esc>:if expand("%") == ""<CR>:browse saveas<CR>:else<CR>:w<CR>:endif<CR>a
https://stackoverflow.com/questions/6430594
复制