我怎么能关闭所有缓冲区在Vim除了一个我目前正在编辑?
当前回答
nnoremap <leader>x :execute '%bdelete\|edit #\|normal `"'\|bdelete#<CR>
关闭所有缓冲区(副作用创建新的空缓冲区) 打开最后一个缓冲区 跳转到缓冲区中的最后编辑位置 删除空缓冲区
其他回答
你可以从vim.org上使用这个脚本:
http://www.vim.org/scripts/script.php?script_id=1071
只要把它放到你的。vim/plugin目录下,然后使用:BufOnly命令关闭所有的缓冲区,但激活的缓冲区除外。您还可以在.vimrc中将它映射到您喜欢的其他地方。
来源Github(通过vim-scripts镜像):https://github.com/vim-scripts/BufOnly.vim/blob/master/plugin/BufOnly.vim
我是这么做的。所以我喜欢在删除所有缓冲区后保持光标的位置,上面的大多数解决方案都忽略了这个事实。我还认为重新映射命令比键入它更好,所以在这里我使用<leader>bd删除所有缓冲区,并跳回我原来的光标位置。
noremap <leader>bd :%bd\|e#\|bd#<cr>\|'"
%bd =删除所有缓冲区。
e# =打开最后一个缓冲区进行编辑(这是我正在工作的缓冲区)。
删除使用%bd时创建的[No Name]缓冲区。
中间的管道只是执行一个又一个命令。你必须使用\|来转义它
'" =保持我的光标位置。
基于juanruiz的回答。
然后,在想要保留的缓冲区中做一个小更改
: 1、1000双相障碍
命令bd(缓冲区删除)将不会删除任何未保存更改的缓冲区。通过这种方式,您可以将当前(已更改的)文件保存在缓冲列表中。
编辑:请注意,这也会删除你的NERDTreeBuffer。你可以用NERDTree把它找回来
试试这个
bufdo bd
Bufdo为所有缓冲区运行命令
http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers
有一个插件可以做到这一点,甚至更多!
查看close-buffers.vim