相反,我希望它关闭文件并打开默认的No Name
缓冲区。我有时不小心关闭了最后一个文件,我必须重新启动gvim并cd到正确的目录。
答案 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
命令,该命令将不会关闭最后一个窗口。