2010-10-11 27 views
5

NERDTree affiche dans le viewport disque c: quel que soit le disque, j'ouvre le fichier.Comment puis-je faire NERDTree pour ouvrir sur le même lecteur que le fichier que je suis en train d'éditer?

Lorsque j'utilise vim dans les fenêtres j'ouvrir les fichiers en utilisant:

gvim.exe --remote-tab-silent [FILE] 

Je chargement NERDTree avec cette ligne dans _vimrc:

au VimEnter * NERDTree 

peut NERDTree changer automaticaly lecteur pour corriger lecteur en quelque sorte?

Répondre

5

NERDTree fournit plusieurs commandes Ex pour manipuler son tampon (voir :help NERDTreeGlobalCommands). Parmi eux, il y a la commande :NERDTreeFind qui se comporte de la même manière que la commande :NERDTree sauf qu'elle ouvre le tampon NERDTree dans le répertoire contenant le fichier actuellement ouvert.

Ainsi, afin d'obtenir l'effet désiré décrit dans la question, vous pouvez changer simplement la commande automatique pour lire

:autocmd VimEnter * NERDTreeFind 
+0

+1 solution beaucoup plus propre que la mienne :) – kfl62

1

J'utilise la cartographie pour NERDTree et de cette façon quand je l'ouvre ouvre toujours en cours dir

" NERDTree mappings 
nnoremap <silent> <F9> :NERDTreeToggle <cr> 
inoremap <silent> <F9> <Esc>:NERDTreeToggle <cr> 

Mais si vous ouvrez un fichier comme gvim ~/other/dir/file NERDTree ouvrira ses portes dir courant d'où gvim a été appelé. Donc, ce n'est pas une vraie solution à votre problème.

Peut-être que si vous travaillez cd avant d'appeler gvim, cela résoudra votre problème. Dans ce cas, même votre au VimEnter * NERDTree dans _vimrc doit fonctionner comme vous l'espérez.

À propos du changement répertoire et réglage de travail dir set autochdirread here

6

En fait, ma dernière réponse ne fonctionne pas, car une fois l'NERDTree été ouvert, il ne s'ouvre plus dans le nouveau répertoire tampon. Il doit fonctionner de manière similaire à NERDTreeFind mais il ne possède pas de fonctionnalité Toggle.

J'ai fait une fonction et l'ai mappée à ma clé et maintenant cela fonctionne parfaitement même en ouvrant le projet Ruby si vous avez le plugin vim-rails.

Ajouter à votre vimrc:

function! NTFinderP() 
    "" Check if NERDTree is open 
    if exists("t:NERDTreeBufName") 
     let s:ntree = bufwinnr(t:NERDTreeBufName) 
    else 
     let s:ntree = -1 
    endif 
    if (s:ntree != -1) 
     "" If NERDTree is open, close it. 
     :NERDTreeClose 
    else 
     "" Try to open a :Rtree for the rails project 
     if exists(":Rtree") 
      "" Open Rtree (using rails plugin, it opens in project dir) 
      :Rtree 
     else 
      "" Open NERDTree in the file path 
      :NERDTreeFind 
     endif 
    endif 
endfunction 


"" Toggles NERDTree 
map <silent> <F1> :call NTFinderP()<CR> 

Il devrait maintenant fonctionner.


Réponse précédente ci-dessous:

Vous pouvez mapper la clé que vous utilisez pour ouvrir NERDTree comme celui-ci (en Vimrc):

map <silent> <F1> :NERDTreeToggle %:p:h<CR> 

Mappe ma touche F1 pour bascule (ouvrir/fermer) NERDTree en utilisant le chemin du tampon actuellement actif. Si aucun tampon n'est ouvert, il s'ouvre dans le répertoire Macvim actuellement lancé.

+1

C'était exactement ce que je cherchant, mais puisque je suis sur Windows et pas un développeur primaire Rails, j'ai fait le "if (s: ntree! = -1) else" simplement appeler: NERDTreeFind. –

+0

Quelqu'un peut-il m'aider à comprendre ce que signifie "t: NERDTreeBufName" '? – zjk

1

Ajouter

au VimEnter,BufWinEnter * NERDTreeFind 

à votre .vimrc.

  • La partie VimEnter permet de travailler en charge.
  • BufWinEnter vous permet d'ouvrir un nouveau fichier.
  • * dit à le faire avec tous les fichiers
  • NERDTreeFind est la commande à exécuter

: SRCs http://vimdoc.sourceforge.net/htmldoc/autocmd.html