我的.vimrc中有以下内容:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Open NERDTree by default
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p
Run Code Online (Sandbox Code Playgroud)
所以,
% vim file.txt
Run Code Online (Sandbox Code Playgroud)
打开NERDTree并将光标聚焦在file.txt缓冲区中.我进行了编辑,然后在缓冲区上点击:q,我就离开了...NERDTree.这很烦人.
我可以使用:qa关闭所有缓冲区,然后退出vim,但我习惯了:q trope.所以我想知道是否有办法检测唯一剩余的缓冲区是NERDTree,并"统一"这两个缓冲区,目的是:q
编辑
问,你们将收到:https: //github.com/scrooloose/nerdtree/issues#issue/21
小智 90
在NERDTree问题列表中发布了完全相同的脚本.在GitHub上查看问题-21 for nerdtree.
这导致了你的vimrc单行命令在这里:
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
Run Code Online (Sandbox Code Playgroud)
blu*_*yed 13
function! s:CloseIfOnlyControlWinLeft()
if winnr("$") != 1
return
endif
if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
\ || &buftype == 'quickfix'
q
endif
endfunction
augroup CloseIfOnlyControlWinLeft
au!
au BufEnter * call s:CloseIfOnlyControlWinLeft()
augroup END
Run Code Online (Sandbox Code Playgroud)
来自我的vimrc,基于janus repo的版本.
增强功能:如果只剩下一个quickfix窗口,也会关闭.它使用BufEnter自动命令,这是&bt正常工作所必需的.