gay*_*vat 153
试试这个
bufdo bd
Run Code Online (Sandbox Code Playgroud)
bufdo为所有缓冲区运行命令
http://vim.wikia.com/wiki/Run_a_command_in_multiple_buffers
Old*_*Guy 108
我能够很容易地做到这一点:
:%bd|e#
Run Code Online (Sandbox Code Playgroud)
jua*_*uiz 57
如果你不关心当前的那个,那么做更简单的事情(不需要脚本):
1,100bd
Run Code Online (Sandbox Code Playgroud)
VoY*_*VoY 56
您可以使用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
iam*_*sam 48
我这样做
:w | %bd | e#
Run Code Online (Sandbox Code Playgroud)
我最喜欢的是我只想让我当前的缓冲区打开并关闭所有其他缓冲区.
工作原理:首先写入当前缓冲区的更改,然后关闭所有打开的缓冲区,然后重新打开当前打开的缓冲区.在Vim中,将|
命令的执行链接在一起.如果您的缓冲区是最新的,则上述内容可以缩短为:%bd | e#
cut*_*ine 25
建立在jananruiz的答案.
然后,对要保留的缓冲区进行一些小改动
:1,1000bd
命令bd
(缓冲区删除)不会删除任何未保存更改的缓冲区.这样,您可以将当前(已更改)文件保留在缓冲区列表中.
编辑:请注意,这也将删除您的NERDTreeBuffer.您可以通过以下方式获取:NERDTree
klo*_*kop 13
通过使用
:on[ly][!]
Run Code Online (Sandbox Code Playgroud)
和
:h only
Run Code Online (Sandbox Code Playgroud)
Yul*_*lin 12
我把它放在我的 .vimrc 文件中
nnoremap <leader>ca :w <bar> %bd <bar> e# <bar> bd# <CR>
Run Code Online (Sandbox Code Playgroud)
然后您的leader + ca
(全部关闭)关闭除当前缓冲区之外的所有缓冲区。
它的作用是
:w - 保存当前缓冲区
%bd - 关闭所有缓冲区
e# - 打开上次编辑的文件
bd# - 关闭未命名的缓冲区
小智 9
关闭所有打开的缓冲区:
silent! execute "1,".bufnr("$")."bd"
Run Code Online (Sandbox Code Playgroud)
关闭除当前缓冲区之外的所有打开缓冲区:
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
Run Code Online (Sandbox Code Playgroud)
添加此功能.vimrc
并使用它来调用它:call CloseAllBuffersButCurrent()
.
便利地图:
nmap <Leader>\c :call CloseAllBuffersButCurrent()<CR>
Run Code Online (Sandbox Code Playgroud)
这就是我所做的。所以我喜欢在删除所有缓冲区后保持我的光标位置,并且上面的大多数解决方案都忽略了这个事实。我还认为重新映射命令比键入命令更好,因此我在这里使用<leader>bd
删除所有缓冲区并跳回原始光标位置。
noremap <leader>bd :%bd\|e#\|bd#<cr>\|'"
Run Code Online (Sandbox Code Playgroud)
%bd
= 删除所有缓冲区。
e#
= 打开最后一个缓冲区进行编辑(这是我正在处理的缓冲区)。
bd#
删除使用时创建的 [No Name] 缓冲区%bd
。
中间的管道只是一个接一个地执行命令。你必须逃脱它虽然使用\|
'"
= 保持我的光标位置。
小智 6
:%bd then Ctrl-o
Run Code Online (Sandbox Code Playgroud)
:%bd 删除所有缓冲区
Ctrl-o 跳回到最后一个缓冲区,这就是您所指的“This One”。