我怎么能关闭所有缓冲区在Vim除了一个我目前正在编辑?
当前回答
我把它放在。vimrc文件中
nnoremap <leader>ca :w <bar> %bd <bar> e# <bar> bd# <CR>
然后你的leader + ca (close all)关闭除当前缓冲区外的所有缓冲区。
它的作用是
:w -保存当前缓冲区
%bd -关闭所有缓冲区
e# -打开上次编辑的文件
关闭未命名缓冲区
其他回答
我这样做
:w | %bd | e#
如果我只想打开当前缓冲区,并关闭所有其他缓冲区,这是我的最爱。
它的工作原理:首先写入当前缓冲区的更改,然后关闭所有打开的缓冲区,然后重新打开我当前所在的缓冲区。在Vim中,|将命令的执行链接在一起。如果你的缓冲区是最新的,上面可以缩短为:%bd |e#
这是一个老问题,但它帮助我为我的项目获得了一些想法。为了关闭除当前使用的缓冲区外的所有缓冲区,请使用;
map <leader>o:execute "%bd\|e#"<CR>
基于juanruiz的回答。
然后,在想要保留的缓冲区中做一个小更改
: 1、1000双相障碍
命令bd(缓冲区删除)将不会删除任何未保存更改的缓冲区。通过这种方式,您可以将当前(已更改的)文件保存在缓冲列表中。
编辑:请注意,这也会删除你的NERDTreeBuffer。你可以用NERDTree把它找回来
关闭所有打开的缓冲区:
silent! execute "1,".bufnr("$")."bd"
关闭除当前缓冲区外的所有打开缓冲区:
function! CloseAllBuffersButCurrent()
let curr = bufnr("%")
let last = bufnr("$")
if curr > 1 | silent! execute "1,".(curr-1)."bd" | endif
if curr < last | silent! execute (curr+1).",".last."bd" | endif
endfunction
将此函数添加到.vimrc并使用以下方法调用:
方便的地图:
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
如果你不关心当前的,更简单的做法是(不需要脚本):
1,100bd