NERDTree Comment ouvrir un fichier et fermer automatiquement le tampon de l'explorateur


10

Lorsque vous utilisez le plug-in NERDTree, le comportement par défaut consiste à ouvrir un nouveau fichier et à garder le tampon NERDTree ouvert. Ce que je veux faire est de conserver ce comportement par défaut mais aussi de le remplacer quand je le souhaite pour que le tampon NERDTree soit fermé après avoir ouvert un fichier.

Je sais que je peux utiliser let NERDTreeQuitOnOpen=1pour fermer automatiquement le tampon NERDTree lorsque j'ouvre un nouveau fichier mais cette option remplace totalement le comportement par défaut (ce qui n'est pas ce que je veux).

Idéalement, j'aimerais savoir s'il existe une fonction intégrée dans NERDTree pour faire ce que je veux. (J'ai cherché mais je n'ai rien trouvé de tel, donc je suppose que cela n'existe pas réellement)

Et si ça n'existe pas, j'avais deux idées:

  • La première consiste à créer une fonction qui serait définie NERDTreeQuitOnOpensur 1, ouvrir le fichier, puis définir à nouveau NERDTreeQuitOnOpensur 0.

  • La seconde consiste à créer le mappage suivant: map d<CR> <CR> :NERDTree <CR> :bd<CR>qui ouvre le fichier (en premier <CR>), retourne au tampon NERDTree ( :NERDTree <CR>) et ferme ce tampon ( :bd <CR>). Je devrais l'améliorer pour que le mappage n'existe que dans le tampon NERDTree, mais je pense que c'est une solution assez moche et je pense qu'elle peut être améliorée.

Quelle idée serait la meilleure et pourquoi? Ou existe-t-il une option encore meilleure?



@Peter: Merci pour votre commentaire, l'article est assez intéressant et je vais probablement essayer Netrw et le concept d'explorateur divisé. Je pense que je comprends l'avantage de ce qui est expliqué dans l'article, mais le problème est qu'il ne résout pas réellement mon problème, il suffit de changer l'outil que j'utilise. Je ne suis pas contre le changement de mes habitudes mais j'aimerais d'abord résoudre mon problème puis essayer un nouvel outil :)
statox

Question connexe et sans réponse sur SU: superuser.com/q/821720/334516 . Peut-être map d<cr> <cr>:NERDTreeClose<cr>pour la cartographie?
muru

@muru: Merci, votre cartographie fonctionne bien et elle semble moins moche que la mienne :) A propos de la question sur SU, je ne suis pas sûr qu'elle soit totalement liée car il veut ouvrir le fichier dans le buffer de NERDTree alors que je veux ouvrez-le dans un nouveau tampon puis fermez le tampon NERDTree: il se retrouve avec une fenêtre partagée alors que je veux me retrouver avec 2 tampons pas dans une fenêtre partagée.
statox

Réponses:


5

Comme la question ne semble pas générer beaucoup de réponses, je vais juste y répondre avec la suggestion de @muru, ce que j'ai utilisé pendant une semaine avant de passer à l'explorateur netrw. (Bien sûr, si une meilleure réponse est proposée, je marquerai volontiers la mienne comme acceptée et j'accepterai la nouvelle)

L'idée est d'utiliser la cartographie suivante:

map d<cr> <cr>:NERDTreeClose<cr>

Ce qui ouvre le fichier comme d'habitude, puis appelle la fonction qui ferme le tampon NERDTree, peu importe où se trouve le curseur.

EDIT: Je suis récemment revenu à NERDTree et j'ai retravaillé ma solution: le mappage que j'ai suggéré auparavant fonctionnait mais comme il existait dans chaque tampon, j'ai dû appuyer ddeux fois sur chaque fois que je voulais supprimer quelque chose qui était assez ennuyeux. (Peut-être que j'aurais pu changer les timeoutparamètres mais j'aime la façon dont il est actuellement défini pour moi, je ne voulais pas non plus le mapper sur une autre combinaison de touches).

J'ai donc remplacé ma première solution par les lignes suivantes à ma .vimrc:

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

De cette façon, le mappage est créé uniquement dans les NERDTreetampons et il ne perturbe pas mon flux de travail dans les autres tampons.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.