Vim: Delete buffer without losing the split window

前端 未结 8 861
后悔当初
后悔当初 2020-12-07 07:55

When a buffer gets deleted (the \"bd[elete]\" command), it not only deletes the buffer but also removes the split window that buffer was in.

Is there a way to delete

相关标签:
8条回答
  • 2020-12-07 08:24

    You can add the following to your .vimrc to have Bd work as bd but without touching the window splits:

    command Bd bp\|bd \#

    I found this as a useful complement to what Mud answered.

    0 讨论(0)
  • 2020-12-07 08:26

    bp|bd # will do it.


    Details:bp("buffer previous") moves us to a different buffer in the current window (bn would work, too), then bd # ("buffer delete" "alternate file") deletes the buffer we just moved away from. See: help bp, help bd, help alternate-file.

    0 讨论(0)
  • 2020-12-07 08:29

    I actually like the behaviour of :bd some of the time so I use the following combination:

    nmap <silent> <Leader>d  :enew \| bd#<Return>
    nmap <silent> <Leader>w :bd<CR>
    

    This allows me to use <Leader>d to close a buffer whilst maintaining splits and <Leader>w to close a buffer and split simultaneously.

    1. :enew creates a new buffer and switches focus to it
    2. bd # delete the last buffer that was focused
    0 讨论(0)
  • 2020-12-07 08:31

    My Choice is

    :sb # | bd #
    :sb 1 | bd #
    : <1. Recall Buffer> | <2. Delete Buffer>
    

    Think Like that! /// <1. Recall Buffer> | <2. Delete Buffer>

    :vert sb 2 | bd #
    :vert sb <tab key~completed file(buffer)name> | bd #
    

    why?! It's easy to remember 3 (+ 1) keyword!

    1. sb split_buffer
    2. bd delete buffer ▶ simple 2 keywords
    3. # or Number of buffer
    4. vert ▶ short_form of vertical (split_buffer or else)

    That are easy and very useful in many other many case!

    Have a nice Day! :)

    0 讨论(0)
  • 2020-12-07 08:40

    See deleting a buffer without closing the window on VIM tips wiki.

    0 讨论(0)
  • 2020-12-07 08:40

    I do something similar to @Mud, but switch to previous view buffer, #, instead of the previous buffer in buffer list. Here is a binding key in my .vimrc:

    nnoremap <silent> <leader>q :lclose<bar>b#<bar>bd #<CR>
    

    Close Location windows, if exist, switch to the previous view buffer, and then close the last switched buffer.

    0 讨论(0)
提交回复
热议问题