【发布时间】:2012-03-02 09:20:27
【问题描述】:
相反,我希望它关闭文件并打开默认的No Name 缓冲区。我有时不小心关闭了最后一个文件,我不得不重新启动 gvim 和 cd 到正确的目录。
【问题讨论】:
标签: vim
相反,我希望它关闭文件并打开默认的No Name 缓冲区。我有时不小心关闭了最后一个文件,我不得不重新启动 gvim 和 cd 到正确的目录。
【问题讨论】:
标签: vim
把它放在你的 $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
【讨论】:
DonotQuitLastWindow 只会关闭一个窗口……如果被qa 触发,则为其添加一个参数并使其成为一个循环(while NumberOfWindows() != 1)。
你为什么不使用
:bd
关闭缓冲区(保存最新更改后)?
【讨论】:
如果您改用:close 命令,该命令不会关闭最后一个窗口。
【讨论】:
<c-w><c-c> 可能会短一些。 :)