当我输入`:q`或`:qa`时,如何让gvim主窗口不退出?

时间:2012-03-02 09:20:28

标签: vim

相反,我希望它关闭文件并打开默认的No Name缓冲区。我有时不小心关闭了最后一个文件,我必须重新启动gvim并cd到正确的目录。

3 个答案:

答案 0 :(得分:5)

把它放在$ MYVIMRC

function! NumberOfWindows()
  let i = 1
  while winbufnr(i) != -1
  let i = i+1
  endwhile
  return i - 1
endfunction


function! DonotQuitLastWindow()
  if NumberOfWindows() != 1
    let v:errmsg = ""
    silent! quit
    if v:errmsg != ""
        "echohl ErrorMsg | echomsg v:errmsg | echohl NONE
        "echoerr v:errmsg
        echohl ErrorMsg | echo v:errmsg | echohl NONE
    endif
  else
     echohl Error | echo "Can't quit the last window..." | echohl None
  endif
endfunction

if has("gui_running")
    cnoreabbrev <expr> q getcmdtype() == ":" && getcmdline() == 'q' ? 'call DonotQuitLastWindow()' : 'q'
    cnoreabbrev <expr> qa getcmdtype() == ":" && getcmdline() == 'qa' ? 'call DonotQuitLastWindow()' : 'qa'
endif

答案 1 :(得分:4)

为什么不使用

:bd

关闭缓冲区(保存最新更改后)?

答案 2 :(得分:3)

如果改为使用:close命令,该命令将不会关闭最后一个窗口。