首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >vim:转到插入模式后:写

vim:转到插入模式后:写
EN

Stack Overflow用户
提问于 2011-06-21 19:02:27
回答 4查看 522关注 0票数 4

我想在写完后返回到插入模式(请参阅:else)

代码语言:javascript
代码运行次数:0
运行
复制
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而不进行文件名测试?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-06-21 21:24:44

inoremap <expr> <c-s> "\<esc>:" . (@% == "" ? "browse saveas" : "w") . "\<cr>gi"

我使用gi返回插入模式。并使用表达式映射来确定文件是否已保存。

票数 4
EN

Stack Overflow用户

发布于 2011-06-21 20:40:47

我在我的.vimrc中使用了这个,这样ctrl-s就可以保存并返回到以前的模式中。也许能帮你弄清楚。;-)

代码语言:javascript
代码运行次数:0
运行
复制
" 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>
票数 2
EN

Stack Overflow用户

发布于 2011-06-21 21:19:50

让它工作了

代码语言:javascript
代码运行次数:0
运行
复制
:inoremap <silent> <C-S> 
   <Esc>:if expand("%") == ""<CR>:browse saveas<CR>:else<CR>:w<CR>:endif<CR>a
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6430594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档