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 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 así, así que supongo que en realidad no existe)
Y si eso no existe, tuve dos ideas:
El primero es crear una función que se establezca
NERDTreeQuitOnOpen
en1
, abra el archivo y luego vuelvaNERDTreeQuitOnOpen
a establecerlo0
.El segundo es crear la siguiente asignación:
map d<CR> <CR> :NERDTree <CR> :bd<CR>
que abre el archivo (primero<CR>
), vuelve al búfer NERDTree (:NERDTree <CR>
) y cierra 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?
fuente
map d<cr> <cr>:NERDTreeClose<cr>
para el mapeo?Respuestas:
Como la pregunta no parece generar mucha respuesta, solo la responderé con la sugerencia de @muru, que es lo que he usado durante una semana antes de cambiarme al explorador netrw. (Por supuesto, si aparece una mejor opción, con mucho gusto desmarcaré la mía como aceptada y aceptaré la nueva)
La idea es utilizar el siguiente mapeo:
Lo que abre el archivo como se hace generalmente y luego llama a la función que cierra el búfer NERDTree sin importar dónde esté el cursor.
EDITAR: Recientemente volví a NERDTree y volví a trabajar en mi solución: la asignación que sugerí antes funcionaba, pero como existía en cada búfer tuve que presionar ddos veces cada vez que quería eliminar algo que es bastante molesto. (Tal vez podría haber cambiado la
timeout
configuración, pero me gusta la forma en que está configurada actualmente para mí, también no quería asignarla en otra combinación de teclas).Así que reemplacé mi primera solución por las siguientes líneas a mi
.vimrc
:De esta forma, la asignación se crea solo en los
NERDTree
búferes y no se mete con mi flujo de trabajo en los otros búferes.fuente