Cuando abro una nueva pestaña con una ruta diferente del archivo anterior en VIM, NERDTree seguirá siendo la misma jerarquía de directorio del archivo anterior.
¿Hay un acceso directo de sincronización para cambiar el directorio raíz actual al directorio del nuevo archivo abierto?
vim
gvim
nerdtree
vim-plugins
Jichao
fuente
fuente
<Leader>f
<leader>
?lanzar un signo% al final como un jefe
:NERDTree %
Tengo esto en mi .vimrc, se asigna Ctrl+ opara alternar nerdtree en el directorio del búfer actual:
map <C-o> :NERDTreeToggle %<CR>
fuente
Las dos respuestas existentes me parecieron educativas y las combiné con éxito para que el comportamiento sea más parecido al que muchas personas esperarían de un IDE: haga clic en una ventana abierta / búfer y haga que ese archivo se destaque en el NERDTree. Puse esto en mi ~ / .vimrc:
autocmd BufEnter * if &modifiable | NERDTreeFind | wincmd p | endif
Qué hace esto:
autocmd BufEnter
- se ejecuta cada vez que te enfocas en un búfer (incluida la ventana NERDTree)if &modifiable
- cuando hace clic en la ventana NERDTree, no haga nada más (la ventana NERDTree no se puede modificar)wincmd p
- NERDTreeFind deja el cursor enfocado en el NERDTree; esto vuelve a la ventana en la que originalmente te enfocasteTenga en cuenta que esto no funcionará en ningún otro búfer que no sea modificable, pero generalmente es algo bueno; de lo contrario (por ejemplo) cada vez que
:help
ingresas a vim, NERDTree encontraría y enfocaría el directorio donde se almacenan los archivos de ayuda, probablemente no es algo que quieras que haga.Al principio, esa solución de una línea funcionó muy bien para mí, pero pronto descubrí que hace que NERDTree se active cada vez que abro un archivo, y como resultado, ¡evita que NERDTree se cierre! Si no quieres usar NERDTree a tiempo completo, pon esto en tu .vimrc en su lugar:
fuente
isNTFocused()
? ¿El&modifiable
cheque no cubre ese caso?Function name must start with a capital or "s:": rc:isNTOpen()
¿Está utilizando un complemento que amplía los ámbitos?.vimrc
en el que había escrito ese código. No recuerdo por qué usé elrc:
, pero creo que era una cuestión de espacio de nombres para evitar conflictos de nombres con otras funciones. Por lo que recuerdo, no estaba usando ningún complemento específicamente relacionado con eso. Tendrás que estudiar los documentos, o simplemente tratar de omitirlos y ver si algo se rompe. Pero creo que uno de los nombres de funciones está en conflicto con algo en NerdTree o en otro lugar. Nadie más ha pedido en casi 5 años, así que tengo la sensación de que es algo simple. :)Me encontré con esta pregunta ayer, después de unas horas de excavación, envié una solicitud de extracción al repositorio nerdtree de scrooloose que presenta un
NERDTreeCWD
comando que cambia la raíz del árbol NERD al directorio de trabajo actual (Actualización en 2012-11-12: El PR se ha fusionado en el maestro ascendente, debería poder usarse en una versión actualizada). Con este cambio, esta pregunta puede resolverse simplemente con el siguiente código.Compárese con el enfoque de @ shinzui y @ Lambart
NERDTreeFind
, esto hace exactamente lo que hizo la pregunta. El usoNERDTreeFind
cambiará la posición de desplazamiento del nerdtree y el resultado no siempre es el mismo (si CWD está en la raíz del árbol NERD, simplemente expande el nodo en lugar de cambiarlo).Compare con la respuesta de @Yaser Sulaiman, esta solución siempre tiene una ventana de árbol NERD abierta y puede codificarse fácilmente. Si ya se ha abierto una ventana de árbol NERD,
NERDTreeToggle
será necesario disparar dos veces (primero cierre la existente, luego ábrala nuevamente), desafortunadamente, la segunda apertura omitirá todo el proceso de cwd.fuente
Esto se comporta como,
:NERDTreeToggle
pero mostrará el archivo abierto actualmente en NERDTree. Si aún no ha abierto un archivo (es decir, acaba de ingresarvim
en su línea de comando), se muestra NERDTree/home
.Pon esto en tu .vimrc:
fuente
Aplico ambas soluciones desde Cambiar el directorio actual usando NERDTree : utilizo
cd
para establecer el directorio de trabajo de NERDTree en el directorio actual yC
para configurar el nodo raíz NERDTree en el directorio actualfuente
Creo que este complemento es lo que quieres https://github.com/jistr/vim-nerdtree-tabs
fuente
Encontré que la respuesta que Matthias publicó es una gran respuesta con un problema, no funciona bien en un par de casos extremos. Funciona un poco mejor con el cambio a continuación:
fuente