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

标签 vim

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

最佳答案

把它放在你的 $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

关于vim - 当我输入 `:q` 或 `:qa` 时,如何使 gvim 主窗口不退出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9530734/

相关文章:

shell - 如何在第 2 列上换行文本

vim - 仅当文件超过 200 行时才折叠代码

vim - 根据文件名在vim中快速搜索特定窗口

string - 如何防止 vim 在字符串中添加缩进?

visual-studio - 在 VsVim 中重新加载配置文件?

vim - vim 中奇怪的下划线符号

vim - 如何在 vim 中快速放置像 "=========="这样的行

vim - 为什么不能在 ctags 命令中使用排除参数排除文件?

macos - 如何提高 mac 操作系统上的 xset 速率?

vim - vim 中的 timeoutlen 自动设置为 500