J'ai le suivant dans mon .vimrc:
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" Open NERDTree by default
""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
autocmd VimEnter * NERDTree
autocmd VimEnter * wincmd p
Alors,
% vim file.txt
ouvre NERDTree et déplace le curseur dans la mémoire tampon file.txt. Je fais mes modifications et tape: q sur le tampon, et il me reste. . . NERDTree. C'est énervant.
Je pourrais utiliser: qa pour fermer tous les tampons et quitter vim, mais je suis habitué au trope: q. Je me demande donc s'il existe un moyen de détecter que le seul tampon restant est NERDTree et de "fédérer" les deux tampons, aux fins de: q
Modifier
Demandez et vous recevrez: https://github.com/scrooloose/nerdtree/issues#issue/21
Un script permettant de faire exactement cela a été posté sur la liste des problèmes NERDTree. Checkout numéro 21 sur GitHub pour nerdtree.
Ceci mène à la commande de ligne unique pour votre vimrc here :
autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif
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
De mon vimrc , basé sur une version de janus repo .
Améliorations: se ferme également si seulement une fenêtre de correction rapide est laissée. Il utilise à la place la commande automatique BufEnter
, qui est requise pour que &bt
fonctionne correctement.
Une idée à mettre en œuvre:
Vous pourriez écrire une fonction qui, lorsqu'elle est appelée, vérifie si le seul tampon restant (ou peut-être le seul tampon autre que d'aide, si vous préférez) est un tampon NERDTree et, si tel est le cas, le supprime (ou quitte simplement).
Puis demandez à un autocmd de le lancer chaque fois qu'un tampon est supprimé/caché/quoi que ce soit qui se passe réellement quand vous: q (cela me fait honte d'admettre que je ne suis pas tout à fait sûr!).
J'aime faire ceci: cmap bq :bufdo q<CR>
pour fermer tous les tampons avec deux frappes de touche en mode commande.
Vous pourriez :cabbrv q qa
mais je déconseillerais cela car vous l'oublierez quand vous voudrez réellement q
.