Las vistas de varias capas de Vim (Windows, Buffers y Tabs) me dejaron un poco confundido. Digamos que divido la pantalla (: sp) y luego selecciono un búfer diferente para mostrar en cada ventana. Ahora quiero cerrar uno de los búferes, pero no quiero que la ventana se cierre (después del cierre, puede mostrar el siguiente búfer de la lista o un búfer vacío, no importa). ¿Cómo puedo hacer esto?
Gracias.
DeleteCurBufferNotCloseWindow()
funciona bien y es bastante legible . (Descargo de responsabilidad: mi respuesta)Respuestas:
Hay un script en la wiki de Vim para hacer esto. No creo que haya una función incorporada que haga lo que quieres.
La última versión de vim-bufkill está en github .
fuente
Me metí un poco con esto y finalmente se me ocurrió:
Aquí está la versión de copiar / pegar para la asignación de teclas:
Lo he probado bastante y funciona de manera constante en varias condiciones. Cuando se usa en el último búfer, le dejará un nuevo búfer en blanco.
Lanza esto en tu .vimrc:
Reinicie Vim o simplemente
:source ~/.vimrc
para que los cambios surtan efecto. La próxima vez que desee cerrar un búfer, simplemente escriba:\q
(si\
es su clave principal)fuente
map <leader>q :bp<bar>sp<bar>bn<bar>bd<CR>
. Reinicie VIM, la próxima vez que desee cerrar un búfer, simplemente escriba:\q
sp
).sp
convsp
. mi entrada .vimrc se ve así:cnoremap bd bp<bar>vsp<bar>bn<bar>bd
Busqué esto hoy y se me ocurrió
:b#|bd#
que cambia la ventana actual al búfer previamente abierto y elimina / oculta el búfer del que acaba de cambiar.
Esto requiere al menos dos búferes conocidos.
Si otra ventana, pero la actual muestra el mismo búfer, esto aún destruirá la división. Puede cambiar todas las ventanas al búfer previamente abierto con
:windo b#
Agregué más detalles sobre el comando anterior discutiendo un mapeo para él (y algunas trampas) en una respuesta a una pregunta similar .
fuente
:#b|#bd
Simplemente intercambiando el comando de búfer y el número de búfer en lo anterior.:bn|bd#
o:bp|bd#
cambiar al búfer abierto anterior o siguiente, respectivamente, en lugar del búfer al que accedió más recientemente (b #).Funciona como debería hasta que se abre un búfer en varias ventanas. Lo suficientemente bueno a menos que desee utilizar los scripts más grandes que existen.
Editar: esto es lo que uso ahora:
fuente
nmap <leader>d :ene<CR>:bd #<CR>
Creo que esto es lo que estas buscando
http://www.vim.org/htmldoc/windows.html#window-moving
Prueba esto:
Mire su identificación de búfer usando
verá una lista de búferes allí como
si desea eliminar b.py del búfer
si desea eliminar / cerrar todos los búferes
fuente
Para aquellos que usan NERDTree.
Solucioné esto usando este complemento https://github.com/jistr/vim-nerdtree-tabs y ahora puedo cerrar el único buff / file / tab sin cerrar la ventana.
Después de tener instalado el complemento anterior, coloque el siguiente código en mi .vimrc:
La descripción de la variable anterior es: Cerrar la pestaña actual si solo hay una ventana en ella y es NERDTree (predeterminado 1)
Más información aquí: https://github.com/jistr/vim-nerdtree-tabs#configuration
fuente
No creo que haya una manera única de hacer esto, pero podrías hacerlo
:enew
o:ls
listar tus búferes y cambiar a uno diferente usando:b [number]
.Una vez que tenga un búfer diferente en la ventana,
:bd #
se eliminará el búfer anterior en la ventana, y dado que el búfer actual todavía existe, la ventana no se cerrará.fuente
Solía usar :
Pero encontré ciertas ocasiones en las que cerraba mi ventana.
Recientemente me di cuenta de que siempre uso esto cuando estoy trabajando en un proyecto y necesito abrir rápidamente mi
.tmux.conf
.zshrc
antes de volver al trabajo.Para este uso, encuentro mejor:
C-6
:bd#
para borrar el buffer anterior (He mapeado de esta manera:nnoremap <leader>d :bd#<CR>
)Me permite controlar el búfer al que vuelvo y se siente más natural.
fuente
haría
¿Haz lo que quieras? editará un búfer nuevo sin nombre en la ventana actual dejando el archivo existente abierto en cualquier otra ventana.
fuente
Mi solución favorita para esto es el complemento bufkill.vim ( GitHub ). Proporciona versiones alternativas de los distintos
:b
comandos -prefix que funcionan igual que sus contrapartes, pero dejan la ventana abierta. Muestran lo que contenga el último búfer visible, o un búfer nuevo / vacío si no había búfer anterior.De la documentación:
fuente
Para 'cerrar' una vista, use
:hid[e]
. Funciona si ha logrado dividir la ventana gráfica o ha abierto varios archivos. No puede ocultar el último búfer en pantalla.1 Otro consejo que me ayudó: utilícelo
:e ./path/to/file.work
para abrir un archivo en la ventana gráfica sin dividir la ventana.PD: A los dos días de vim todavía tengo problemas para encontrar los comandos de ayuda precisos. Con suerte, esto ayudará a alguien más a seguir trabajando hasta que realmente tenga tiempo para entender vim.
fuente
Aquí hay una función vimscript muy legible, que maneja bien todos los casos ,
:bd
(si solo hay una ventana, ¡simplemente invocala!),:enew
.buffer-list
, cámbielo, de lo contrario, vaya a través de:bn
.fuente
Si eres como yo y viniste aquí tratando de hacer lo contrario , cierra la ventana sin cerrar el búfer, puedes hacerlo a través de:
:close
fuente
Una versión simple que uso personalmente es
Va al búfer anterior y borra el otro búfer (que en realidad es el original desde donde saltamos). Esto hace lo que cabría esperar en el 99% de los casos sin guiones complicados.
Como atajo de teclado utilizo lo siguiente
fuente
utilice ": bd" como comando.
fuente