2010-10-11 13 views

Respuesta

5

NERDTree proporciona varias Ex comandos para manipular su memoria intermedia (ver :help NERDTreeGlobalCommands). Entre ellos está el comando :NERDTreeFind que se comporta del mismo modo que el comando :NERDTree, excepto que abre el búfer NERDTree en el directorio que contiene el archivo abierto actualmente.

Por lo tanto, con el fin de lograr el efecto deseado descrito en la pregunta, puede simplemente cambiar el mando automático para leer

:autocmd VimEnter * NERDTreeFind 
+0

1 mucho solución más limpia que la mía :) – kfl62

1

uso de mapas para NERDTree y de esta manera cuando lo abro se abre siempre en directorio actual

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

Pero si abre un archivo como gvim ~/other/dir/file NERDTree se abrirá directorio actual desde donde se llamó gvim. Entonces esta no es una solución real a tu problema.

Quizás si cd en el directorio de trabajo antes de llamar a gvim resolverá su problema. En este caso, incluso su au VimEnter * NERDTree en _vimrc debe funcionar como usted espera.

Acerca del cambio de directorio y el establecimiento de trabajo dir set autochdirread here

6

En realidad, mi última respuesta no funciona porque una vez que el NERDTree haber sido abierto, no se abre de nuevo en el nuevo directorio de búfer. Debe funcionar de manera similar a NERDTreeFind, pero no tiene una característica de Alternar.

Hice una función y la asigné a mi clave y ahora funciona perfectamente incluso al abrir el proyecto Ruby si tiene el plugin vim-rails.

Agregar a su 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> 

Debería funcionar ahora.


continuación

respuesta anterior:

Se puede asignar la clave que se utiliza para abrir NERDTree como esto (en .vimrc):

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

Esto mapea mi tecla F1 para alternar (abrir/cerrar) NERDTree utilizando la ruta del búfer activo actualmente. Si no hay ningún búfer abierto, se abre en el directorio Macvim actualmente en ejecución.

+1

Esto era exactamente lo que estaba buscando, pero como estoy en Windows y no soy un desarrollador principal de Rails, hice el "if (s: ntree! = -1) else" simplemente llame: NERDTreeFind. –

+0

¿Alguien me puede ayudar a entender qué significa '" t: NERDTreeBufName "'? – zjk

1

Añadir

au VimEnter,BufWinEnter * NERDTreeFind 

a su .vimrc.

  • VimEnter parte hace que funcione con carga.
  • BufWinEnter hace que suceda que abre un nuevo archivo.
  • * dice que hacer esto con todos los archivos
  • NERDTreeFind es el comando para ejecutar

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

Cuestiones relacionadas