我想在写入后返回插入模式(参见:else)

function! SaveOrSaveAsInInsert()
  if @% == ""
    :browse saveas
  else
    :w
    "//TODO: Return to insert mode
  endif
endfunction

尝试使用 :w<CR>a 但不起作用。

谢谢!

编辑

@Randy Morris,使用有效的 startinsert 发表评论。另一方面 :h inserting-ex 说:



所以我的问题是我坚持使用 startinsert i 等价物,还是有办法绕过 a 行为?或者我应该坚持使用 imap <C-s> <Esc>w<CR>a 而没有文件名测试?

最佳答案

inoremap <expr> <c-s> "\<esc>:" . (@% == "" ? "browse saveas" : "w") . "\<cr>gi"
我使用 gi 回到插入模式。并使用表达式映射来确定文件是否已保存。

10-08 04:14