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.