Vim:closures所有的缓冲区,但这一个
如何closuresVim中的所有缓冲区,除了我正在编辑的那个?
你可以从vim.org使用这个脚本:
http://www.vim.org/scripts/script.php?script_id=1071
把它放到你的.vim/plugin
目录下,然后使用:BufOnly
命令closures所有的缓冲区,但是活动的。 你也可以在你的.vimrc
里把它映射到你喜欢的地方。
Github上的源码(通过vim-scripts镜像): https : //github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim
如果你不在乎现在的,更简单的做一些类似的事情(不需要脚本):
1,100bd
我这样做
:w | %bd | e#
我最喜欢的,如果我只是想打开我的当前缓冲区并closures所有其他的。
它是如何工作的:首先写入当前缓冲区的更改,然后closures所有打开的缓冲区,然后重新打开当前所在的缓冲区。 在Vim中, |
将命令的执行链接在一起。 如果你的缓冲区是最新的,上面可以缩写为:%bd | e#
:%bd | e#
build立在juananruiz的答案。
然后,在要保留的缓冲区中进行小的更改
:1,1000bd
命令bd
(缓冲区删除)不会删除未保存更改的缓冲区。 这样可以将当前(更改)的文件保存在缓冲区列表中。
编辑:请注意,这也将删除您的NERDTreeBuffer。 你可以拿回来:NERDTree
我能够很容易地做到这一点:
:%bd|e#
通过使用
:on[ly][!]
和
:h only
closures所有打开的缓冲区:
silent! execute "1,".bufnr("$")."bd"
closures除当前所有打开的缓冲区:
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
并使用:call CloseAllBuffersButCurrent()
.vimrc
调用它:call CloseAllBuffersButCurrent()
。
便利地图:
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
有一个插件可以做到这一点,还有更多!
看看close-buffers.vim
我喜欢1,100bd
( 由juananruizbuild议 ),似乎为我工作。
我加了一个quit!
给我的地图给我
nnoremap <leader>bd :1,100bd<CR> nnoremap <leader>bdq :1,100bd<CR>:q!<CR>
这杀死了所有的缓冲区,并closures了Vim,这正是我所需要的。