A small Neovim plugin to improve the deletion of buffers.
Improvements:
- Preserve the layout of windows. Deleting a buffer will no longer close any window unexpectedly (see demo).
- Cycle through buffers according to their number (configurable). This is especially helpful when using a bufferline: we get the same behavior as closing tabs in Chrome / Firefox (see demo).
- Terminal buffers are deleted without prompt.
- Exit Neovim when last buffer is deleted (configurable).
- Add commands to close all listed buffers and to close them all except the current one.
Here the same buffer is displayed in left and top-right window. Deleting that buffer preserves the window layout and the first buffer with a number greater than the deleted one is selected instead (the one immediately to the right in the bufferline).
With packer.nvim:
use {'ojroques/nvim-bufdel'}
With paq-nvim:
paq {'ojroques/nvim-bufdel'}
Delete the current buffer:
:BufDel
Delete the current buffer and ignore changes:
:BufDel!
Delete a buffer by its name or number (use quotes in case the buffer name is a number):
:BufDel <bufexpr>
Delete all listed buffers (add !
to ignore changes):
:BufDelAll
Delete all listed buffers except the current one (add !
to ignore changes):
:BufDelOthers
You can pass options to the setup()
function. Here are the default options:
require('bufdel').setup {
next = 'tabs',
quit = true, -- quit Neovim when last buffer is closed
}
The next
option determines the next buffer to display after deletion.
Supported values:
cycle
: cycle through buffers according to their number.tabs
(default): likecycle
but when the buffer with highest number is deleted, display the new highest buffer instead of going back to the first one.alternate
: switch to the alternate buffer (same behavior as without the plugin).- You can also pass your own function to select the next buffer.