vim:在 :write 后转到插入模式

标签 vim

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

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

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

谢谢!

编辑

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

NOTE: These commands cannot be used with |:global| or |:vglobal|. ":append" and ":insert" don't work properly in between ":if" and ":endif", ":for" and ":endfor", ":while" and ":endwhile".



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

最佳答案

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

关于vim:在 :write 后转到插入模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6430594/

相关文章:

ruby-on-rails - 带有 ruby​​ omnicompletion 的 rails.vim 给出 "Error loading rails environment"错误

java - 如何配置 Syntastic 在何处生成 .class 文件?

vim - vim 如何将一个单词移动到句子的开头

Vim vundle 配色方案 - vimrc

macros - 有没有一种方法可以显示宏列表,类似于在 Vim 中显示映射?

vim - 如何根据缓冲区中已经找到的单词使 Vim 自动完成一个单词?

vim - 在 Vim 中移动到当前单词的结尾

Vim 命令重置为最旧的更改?

Vim 切换缓冲区时保持窗口位置

linux - 我要在我的 VIM 配置中更改什么才能做到这一点? (去掉箭头)