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:
:BufDelDelete 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):
:BufDelAllDelete all listed buffers except the current one (add ! to ignore changes):
:BufDelOthersYou 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): likecyclebut 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.
