til / Close all open vim buffers except the current
During development, I often use :ls to display open buffers. However, after a while, the list can become long. I’m going to add a custom command in my .vimrc – which is similar to “Close others” in VS Code – that deletes all buffers, except the one I’m currently on.
command BufOnly silent! execute "%bd|e#|bd#"
command– Define a user commandBufOnly– The command name we want to usesilent!– Silence messages,!silences errors tooexecute– Execute the following string expression
Now let’s breakdown the actual command. The pipes (|) break the string into three commands:
%bd– Deletes all open buffers (bdis short forbdelete)e#– Opens the last buffer (eis short foredit)bd#– Deletes the[No Name]buffer that gets created
After restarting Vim or sourcing the updated .vimrc I can run :BufOnly to clean up my :ls list.
Quick command #
Create a binding to run the command quickly whenever needed.
" I have <leader> mapped to <Space>
nnoremap <leader>b :BufOnly<CR>