If I have 2 buffers split horizontally/vertically and want to close one of them, but i don't want to close a window. I want to keep places of split windows are the same as before closing buffer.
If I press :bd , the window in which was closed buffer also became closed.
Like @RusAlex I don't like plug-ins. I also like to know what code I enter actually does.
nmap ,d :b#<bar>bd#<CR>
In short this adds a key mapping to vim's normal mode waiting for key sequence ,d. When executed this switches to a previously open buffer and attempts to delete the buffer you switched away from.
Deleting an off-screen buffer keeps the screen split as it is.
The command consists of three space-separated parts:
nmap - add/change key mapping for mode normal,d - key sequence to react to; first , (comma), then d :b#<bar>bd#<CR> - key sequence to executeThe command to be executed consists of five parts:
: - switch vim to mode command-lineb# - switch window to previously open buffer<bar> - expect a follow-up command; represents | (pipe character); used for chaining commandsbd# - delete previously open buffer, i.e. the buffer just switched away from<CR> - execute command(s); represents carriage return, basically the keys Return or Enter The command is in the format it is used in a configuration file like ~/.vimrc. If you want to add the mapping from within vim you prepend : (colon) - the mapping then will be lost when exiting vim:
:nmap ,d :b#<bar>bd#<CR>
When you open vim it is usually in normal mode as opposed to modes insert (indicated on the bottom of the screen by -- INSERT -- after pressing i), visual and so on. The n in nmap specifies the key mapping to be added to normal mode only. Find more on mappings here
Important notes:
b# will switch to the current buffer if it is the only known buffer.b# may switch to a hidden/closed buffer, e.g. the one you just closed by pressing ,d.bd# will close the current buffer if it is the only known buffer unsplitting the screen leaving you with an empty buffer.bd# will fail if the buffer switched away from is a hidden/closed buffer.bd# will still unsplit if after switching another window shows the buffer to close.Additional notes:
:windo b# will switch all windows to the previously open buffer. Not sure how to combine with bd. <CR> can be left out in which case you have to manually press Return or Enter to execute.:nmap , displays all normal mode mappings starting with ,.:ls lists open buffers.If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With