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 command -
BufOnly– The command name we want to use -
silent!– Silence messages,!silences errors too -
execute– 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>
Top comments (0)