plugin-nerdtree – NERDTree Cómo abrir un archivo y cerrar automáticamente el búfer del explorador

Pregunta:

Cuando se usa el complemento NERDTree, el comportamiento predeterminado es abrir un nuevo archivo y mantener abierto el búfer NERDTree. Lo que quiero hacer es mantener este comportamiento predeterminado pero también anularlo cuando lo desee para que el búfer NERDTree se cierre después de abrir un archivo.

Sé que puedo usar let NERDTreeQuitOnOpen=1 para cerrar automáticamente el búfer de NERDTree cuando abro un nuevo archivo, pero esta opción anula totalmente el comportamiento predeterminado (que no es lo que quiero).

Idealmente, me gustaría saber si hay una función incorporada en NERDTree para hacer lo que quiero. (He estado buscando pero no encontré nada de eso, así que supongo que en realidad no existe)

Y si eso no existe, tenía dos ideas:

  • El primero es crear una función que establezca NERDTreeQuitOnOpen en 1 , abrir el archivo y luego establecer nuevamente NERDTreeQuitOnOpen en 0 .

  • El segundo es crear el siguiente mapeo: map d<CR> <CR> :NERDTree <CR> :bd<CR> que abre el archivo (primero <CR> ), vuelve al búfer NERDTree ( :NERDTree <CR> ) y cierre este búfer ( :bd <CR> ). Debería mejorarlo para que el mapeo solo exista en el búfer NERDTree, pero creo que es una solución bastante fea y creo que se puede mejorar.

¿Qué idea sería la mejor y por qué? ¿O hay una opción aún mejor?

Respuesta:

Como la pregunta no parece generar mucha respuesta, simplemente la responderé con la sugerencia de @muru, que es lo que he usado durante una semana antes de cambiar al explorador de netrw. (Por supuesto, si surge una mejor opción de respuesta, con mucho gusto desmarcaré la mía como aceptada y aceptaré la nueva)

La idea es utilizar el siguiente mapeo:

map d<cr> <cr>:NERDTreeClose<cr>

Lo que abre el archivo como se hace normalmente y luego llama a la función que cierra el búfer NERDTree sin importar dónde esté el cursor.

EDITAR: Recientemente cambié de nuevo a NERDTree y modifiqué mi solución: el mapeo que sugerí antes estaba funcionando, pero como existía en cada búfer, tuve que presionar dos veces d cada vez que quería eliminar algo que es bastante molesto. (Tal vez podría haber cambiado la configuración del timeout pero me gusta la forma en que está configurado actualmente para mí, y tampoco quería asignarlo a otra combinación de teclas).

Así que reemplacé mi primera solución por las siguientes líneas en mi .vimrc :

autocmd BufEnter NERD_tree_* nmap  d<CR> <CR> :NERDTreeToggle <CR>
autocmd BufLeave NERD_tree_* unmap d<CR>

De esta manera, el mapeo se crea solo en los búferes NERDTree y no NERDTree con mi flujo de trabajo en los otros búferes.

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım