我从另一个stackoverflow用户conner获取了这个代码,这个问题Automatically quit Vim if NERDTree and TagList are the last and only buffers
(我没有办法对这个问题发表评论,所以我唯一的选择就是问一个新的问题)。
问题是:如果只剩下nerdtree和taglist两个缓冲区,如何关闭vim编辑器(在linux mint中)?
提供的答案是:

" If only 2 windows left, NERDTree and Tag_List, close vim or current tab
fun! NoExcitingBuffersLeft()
  if winnr("$") == 3
    let w1 = bufname(winbufnr(1))
    let w2 = bufname(winbufnr(2))
    let w3 = bufname(winbufnr(3))
    if (exists(":NERDTree")) && (w1 == "__Tag_List__" || w2 == "__Tag_List__" || w3 == "__Tag_List__")
      if tabpagenr("$") == 1
        exec 'qa'
      else
        exec 'tabclose'
      endif
    endif
  endif
endfun
autocmd BufWinLeave * call NoExcitingBuffersLeft()

但这并不能正常工作。每当我关闭最后一个“令人兴奋”的缓冲区(非nerdtree或非标记列表的缓冲区)时,它就会关闭,但每当我试图从nerdtree打开一个新文件时(双击“资源管理器”中的文件名),它也会关闭。
老实说,我不太明白这段代码。我试着去处理它,但是我没有得到我想要的结果。
从nerdtree资源管理器打开新文件时,如何将此代码更改为不关闭?
谢谢你,康纳,还有社区其他人!

最佳答案

从标记列表手册中,放入您的.vimrc文件

let Tlist_Exit_OnlyWindow=1

我不使用nerdtree,但您可以成功地使用以下命令
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTreeType") && b:NERDTreeType == "primary") | q | endif

关于linux - 如果NERDTree和TagList仅剩2个缓冲区,则自动退出Vim,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19783072/

10-12 22:20