Lorsque j'ouvre un nouvel onglet avec un chemin différent du fichier précédent dans VIM, NERDTree reste la même hiérarchie de répertoires que celle du fichier précédent.
Existe-t-il un raccourci de synchronisation pour changer le répertoire racine actuel en nouveau répertoire du fichier ouvert?
vim
gvim
nerdtree
vim-plugins
Jichao
la source
la source
<Leader>f
<leader>
?jeter un signe% à la fin comme un patron
:NERDTree %
J'ai ceci dans mon fichier .vimrc, il mappe Ctrl+ opour basculer nerdtree dans le répertoire du tampon courant:
map <C-o> :NERDTreeToggle %<CR>
la source
J'ai trouvé les deux réponses existantes instructives et les a combinées avec succès pour que le comportement ressemble davantage à celui que beaucoup de gens attendaient d'un IDE: Cliquez sur une fenêtre / mémoire tampon ouverte et mettez ce fichier en surbrillance dans l'arbre NERDTree. Je mets ceci dans mon ~ / .vimrc:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Qu'est-ce que cela fait:
autocmd BufEnter
- s'exécute chaque fois que vous vous concentrez sur un tampon (y compris la fenêtre NERDTree)if &modifiable
- lorsque vous cliquez sur la fenêtre NERDTree, ne faites rien d'autre (la fenêtre NERDTree n'est pas modifiable)wincmd p
- NERDTreeFind laisse le curseur concentré sur le NERDTree; cela revient à la fenêtre sur laquelle vous vous concentriez à l'origineNotez que cela ne fonctionnera sur aucun autre tampon non modifiable, mais c'est généralement une bonne chose. sinon (par exemple) chaque fois que vous
:help
accéderez à vim, NERDTree rechercherait et mettrait en évidence le répertoire dans lequel les fichiers d’aide sont stockés - ce n’est probablement pas quelque chose que vous souhaitiez.Cette solution à une ligne a très bien fonctionné pour moi au début, mais j’ai vite constaté qu’elle activait NERDTree à chaque fois que j’ouvrais un fichier - ce qui évitait donc que NERDTree ne soit jamais fermé! Si vous ne voulez pas utiliser NERDTree à temps plein, mettez ceci dans votre fichier .vimrc:
la source
isNTFocused()
? Le&modifiable
chèque ne couvre- t-il pas ce cas?Function name must start with a capital or "s:": rc:isNTOpen()
Utilisez-vous un plugin qui étend les portées?.vimrc
dans lequel j'avais écrit ce code. Je ne me souviens pas pourquoi j'ai utilisé lerc:
mais Je n'utilisais aucun plugin spécifiquement lié à cela, autant que je m'en souvienne. Vous devrez étudier la documentation ou simplement essayer de la laisser et de voir si quelque chose se casse. Mais je pense que l'un des noms de fonction était en conflit avec quelque chose dans NerdTree ou ailleurs. Personne d'autre n'a demandé depuis presque 5 ans, alors j'ai l'impression que c'est quelque chose de simple. :)Je suis tombé sur cette question hier, après quelques heures de fouilles, j'ai soumis une demande d' extraction pour scrooloose le dépôt de nerdtree introduisant une
NERDTreeCWD
commande qui change la racine de l'arborescence NERD en un répertoire de travail courant (Mise à jour le 12/11/2012: le PR a été fusionné dans le maître en amont, il devrait être utilisable sur une version mise à jour). Avec ce changement, cette question peut être simplement résolue par le code suivant.Comparez à l'approche de @ shinzui et de @ Lambart
NERDTreeFind
, cela correspond exactement à la question posée. UtiliserNERDTreeFind
changera la position de défilement du nerdtree et le résultat ne sera pas toujours le même (si CWD est dans la racine de l’arbre NERD, le noeud sera simplement agrandi au lieu d’être modifié).Comparée à la réponse de @Yaser Sulaiman, cette solution a toujours une fenêtre arborescence NERD ouverte et peut être facilement codée. Si une fenêtre d'arborescence NERD a déjà été ouverte, l'utilisation
NERDTreeToggle
devra être déclenchée deux fois (fermez d'abord celle existante, puis ouvrez-la à nouveau). Malheureusement, la deuxième ouverture ignorera le traitement complet de cwd.la source
Cela se comporte
:NERDTreeToggle
mais affichera le fichier actuellement ouvert dans NERDTree. Si vous n'avez pas encore ouvert de fichier (c'est-à-dire que vous venez d'entrervim
dans votre ligne de commande), NERDTree s'affiche/home
.Mettez ceci dans votre .vimrc:
la source
J'applique les deux solutions à partir de Changer le répertoire actuel à l'aide de NERDTree : utiliser
cd
pour définir le répertoire de travail NERDTree sur le répertoire actuel etC
définir le nœud racine NERDTree sur le répertoire actuella source
Je pense que ce plugin est ce que vous voulez https://github.com/jistr/vim-nerdtree-tabs
la source
J'ai trouvé que la réponse affichée par Matthias était une excellente réponse à un problème: cela ne fonctionnait pas bien dans quelques cas extrêmes. Cela fonctionne un peu mieux avec le changement ci-dessous:
la source