82 votes

Vim : Comment synchroniser NERDTree avec le chemin du fichier de l'onglet ouvert en cours ?

Lorsque j'ouvre un nouvel onglet avec un chemin différent de celui du fichier précédent dans VIM, NERDTree conserve la même hiérarchie de répertoires que le fichier précédent.

Existe-t-il un raccourci de synchronisation pour changer le répertoire racine actuel en répertoire du nouveau fichier ouvert ?

3voto

Matthias Braun Points 882

Cela se comporte comme :NERDTreeToggle mais montrera le fichier actuellement ouvert dans NERDTree. Si vous n'avez pas encore ouvert de fichier (c'est-à-dire que vous venez de saisir vim dans votre ligne de commande) NERDTree affiche /home .

Mettez ceci dans votre .vimrc :

" Open NERDTree in the directory of the current file (or /home if no file is open)
nmap <silent> <C-i> :call NERDTreeToggleInCurDir()<cr>
function! NERDTreeToggleInCurDir()
  " If NERDTree is open in the current buffer
  if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
    exe ":NERDTreeClose"
  else
    exe ":NERDTreeFind"
  endif
endfunction

3voto

lamont Points 133

Vérifiez ce plugin cool vim-nerdtree-sync

enter image description here

1voto

j2fly Points 11

Je pense que ce plugin est ce que vous voulez https://github.com/jistr/vim-nerdtree-tabs

1voto

Casper Gerritsen Points 111

J'applique les deux solutions de Changer le répertoire courant en utilisant NERDTree : utilisation cd pour définir le répertoire de travail de NERDTree comme étant le répertoire courant et C pour définir le nœud racine du NERDTree dans le répertoire actuel

0voto

Keith Schaab Points 1

J'ai trouvé la réponse que Matthias a postée comme étant une excellente réponse avec un seul problème, elle ne fonctionne pas bien dans quelques cas limites. Elle fonctionne un peu mieux avec la modification ci-dessous :

function! NERDTreeToggleInCurDir()
  " If NERDTree is open in the current buffer
  if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1)
    exe ":NERDTreeClose"
  elseif bufname('%')
    exe ":NERDTreeFind"
  else
    exe ":NERDTreeCWD"
  endif
endfunction

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X