19 votos

Automáticamente dejar vim si NERDTree es la última y sólo buffer

Tengo el siguiente en mi .vimrc:

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

Así,

% vim file.txt

abre NERDTree y se centra el cursor en la file.txt búfer. Puedo hacer mis ediciones, y de golpe :p en el buffer, y yo me quedo con . . . NERDTree. Esto es molesto.

Yo podría usar :qa para cerrar todos los buffers, y salir de vim, pero estoy acostumbrado a el :p tropo. Así que me pregunto si hay una forma de detectar que el único resto de búfer es NERDTree, y "unificar" los dos buffers, para los fines de :q

Editar

Pedid y se os dará: https://github.com/scrooloose/nerdtree/issues#issue/21

25voto

Andrew Puntos 266

Un script para hacer exactamente esto se ha publicado en la lista de tema NERDTree. Retirada https://github.com/scrooloose/nerdtree/issues#issue/21

8voto

blueyed Puntos 7719
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

vimrc repo de janus.

Mejoras: cierre también si sólo queda una ventana quickfix. BufEnter &bt para que funcione correctamente.

1voto

Michał Marczyk Puntos 54179

Una idea que necesitan de la aplicación:

Podría escribir una función que, cuando llama, comprueba si el buffer único restante (o tal vez el tampón sólo no ayuda, si lo prefiere) es un buffer NERDTree y elimina (o simplemente se cierra).

Entonces tiene un autocmd ejecutarlo cada vez que un tampón es eliminado / oculto / en realidad lo que sucede cuando usted: q (vergüenza me admitir que no estoy totalmente seguro)!.

0voto

Randy Morris Puntos 16975

Usted podría :cabbrv q qa pero yo aconsejaría contra eso porque se olvida sobre él cuando realmente quieras q .

0voto

Me gustaria hacer esto: cmap bq :bufdo q<CR> para cerrar todos los búferes con dos pulsaciones de tecla en modo de comando.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X