Vim: elimina el búfer sin perder la ventana dividida


149

Cuando se elimina un búfer (el comando "bd [elete]"), no solo elimina el búfer sino que también elimina la ventana dividida en la que estaba el búfer.

¿Hay alguna forma de eliminar / descargar un búfer y mantener la ventana dividida?



Esto funcionó bien para mí.
Rumple Stiltskin

[Este DeleteCurBufferNotCloseWindow()funciona bien y es bastante legible] ( stackoverflow.com/a/44950143/3625404 ).
qeatzy

2
Posible duplicado del búfer de cierre
ezdazuzena

Respuestas:



326

bp|bd # lo haré.


Detalles: bp("buffer anterior") nos mueve a un buffer diferente en la ventana actual ( bntambién funcionaría), luego bd #("buffer delete" "alternate file") elimina el buffer del que nos acabamos de alejar. Ver: help bp, help bd, help alternate-file.


71
No tienes idea de cuánto tiempo he estado buscando algo como esto, que es tan simple, no requiere un script completo para ejecutarlo. En mi VIMRC, ahora tengo esto asignado para CTRL + C:nnoremap <C-c> :bp\|bd #<CR>
Nube

11
Estoy tratando de reasignar usando nmap <silent> <leader>d :bp|bd #<CR>, pero estoy obteniendo E94: No matching buffer for #<CR>.
Fábio Perez

22
Ponga una barra invertida delante del |(por ejemplo :bp\|bd)
Mud

44
Sabía que no debería tener que instalar un complemento para esto. ¡Gracias!
Akash Agrawal

2
b#|bd #cambiará al último búfer usado en lugar del siguiente / anterior. Sin embargo, saltará a buffers ocultos si lo ha hecho set hidden, por lo que hice una función BD más inteligente para evitar eso.
c24w

15

Puede añadir lo siguiente a su .vimrctener Bdtrabajo como bd, pero sin tocar las divisiones de la ventana:

command Bd bp\|bd \#

Encontré esto como un complemento útil a lo que respondió Mud.


Eso es exactamente lo que tengo en mi .vimrc. :)
Barro

Y puede agregar los 3 comandos para descargar, eliminar y borrar un búfer: ¡comando! BUN comando bp \ | bun \ #! BD bp \ | bd \ # comando! BW bp \ | bw \ # que es equivalente a lo que proporciona bufkill pero con 3 líneas en vimrc en lugar de un complemento de más de 700 líneas.
fievel

3
Para mí solo funcionó con esto en .vimrc command! Bd bp|bd #. El comando anterior con el `` mantuvo el búfer en la lista de búferes.
mljrg


3

Hago algo similar a @Mud, pero cambio al búfer de vista anterior #, en lugar del búfer anterior en la lista de búfer. Aquí hay una clave vinculante en mi .vimrc:

nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>

Cerrar ventanas de Ubicación, si existen, cambiar al búfer de vista anterior y luego cerrar el último búfer cambiado.


1

Mi elección es

:sb # | bd #
:sb 1 | bd #
: <1. Recall Buffer> | <2. Delete Buffer>

¡Piensa así! /// <1. Recuperar Buffer> | <2. Eliminar búfer>

:vert sb 2 | bd #
:vert sb <tab key~completed file(buffer)name> | bd #

¡¿por qué?! ¡Es fácil recordar 3 (+ 1) palabras clave!

  1. sb split_buffer
  2. bd delete buffer ▶ simple 2 palabras clave
  3. # o Número de búfer
  4. vert ▶ short_form de vertical (split_buffer u otro)

¡Eso es fácil y muy útil en muchos otros casos!

¡Que tengas un buen día! :)


0

Solía ​​usar :

:bp<bar>sp<bar>bn<bar>bd<CR>

Pero encontré ciertas ocasiones donde cerró mi ventana. Además de eso, el búfer siguiente o anterior podría no ser lo que desea que se muestre en la división.

Ahora hago esto:

  • cambiar al búfer en el que quiero trabajar
  • Eliminar el búfer alternativo

nnoremap <leader>d :bd#<CR>

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.