tutorial plugin plugged minimalist manager awesome airline vim nerdtree

plugin - vim awesome



Salga automáticamente de vim si NERDTree es el último y único búfer (5)

Tengo lo siguiente en mi .vimrc:

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" " Open NERDTree by default """""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" autocmd VimEnter * NERDTree autocmd VimEnter * wincmd p

Asi que,

% vim file.txt

abre NERDTree y enfoca el cursor en el buffer de archivo.txt. Hago mis ediciones, y presiono: q en el buffer, y me queda. . . NERDTree. Esto es molesto

Podría usar: qa para cerrar todos los buffers, y salir de vim, pero estoy acostumbrado a: q tropo. Así que me pregunto si hay una manera de detectar que el único búfer restante es NERDTree, y "unificar" los dos búferes, con el propósito de: q

Editar

Pregunta y recibirás: https://github.com/scrooloose/nerdtree/issues#issue/21


Me gusta hacer esto: cmap bq :bufdo q<CR> para cerrar todos los buffers con dos teclas en modo comando.


Podrías :cabbrv q qa pero desaconsejaría eso porque lo olvidarás cuando realmente quieras q .


Se ha publicado una secuencia de comandos para hacer exactamente esto en la lista de problemas de NERDTree. Checkout https://github.com/scrooloose/nerdtree/issues#issue/21 en GitHub para nerdtree.

Esto lleva al comando de línea única para su vimrc here :

autocmd bufenter * if (winnr("$") == 1 && exists("b:NERDTree") && b:NERDTree.isTabTree()) | q | endif


Una idea que necesita implementación:

Podría escribir una función que, cuando se invoca, comprueba si el único búfer restante (o quizás el único búfer que no es de ayuda, si lo prefiere) es un búfer de NERDTree y, si es así, lo elimina (o simplemente lo abandona).

Luego haz que autocmd lo ejecute siempre que se borre / oculte un búfer / lo que suceda realmente cuando: q (¡me da pena admitir que no estoy del todo seguro!).


function! s:CloseIfOnlyControlWinLeft() if winnr("$") != 1 return endif if (exists("t:NERDTreeBufName") && bufwinnr(t:NERDTreeBufName) != -1) / || &buftype == ''quickfix'' q endif endfunction augroup CloseIfOnlyControlWinLeft au! au BufEnter * call s:CloseIfOnlyControlWinLeft() augroup END

De mi vimrc , basado en una versión de janus repo .

Mejoras: también se cierra si solo queda una ventana de solución rápida. Utiliza el BufEnter , que es necesario para que &bt funcione correctamente.