我喜欢用Vim运行'hidden'.但有时候,我有很多隐藏的缓冲区,我想杀死它们.我可以:bdelete对缓冲区列表中的每个隐藏缓冲区使用什么命令?
ZyX*_*ZyX 22
尝试以下功能:
function DeleteHiddenBuffers()
let tpbl=[]
call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
silent execute 'bwipeout' buf
endfor
endfunction
Run Code Online (Sandbox Code Playgroud)
Extendend版本的@ZyX答案,跳过改性缓冲器,并输出已关闭缓冲器的数目。
function! DeleteHiddenBuffers()
let tpbl=[]
let closed = 0
call map(range(1, tabpagenr('$')), 'extend(tpbl, tabpagebuflist(v:val))')
for buf in filter(range(1, bufnr('$')), 'bufexists(v:val) && index(tpbl, v:val)==-1')
if getbufvar(buf, '&mod') == 0
silent execute 'bwipeout' buf
let closed += 1
endif
endfor
echo "Closed ".closed." hidden buffers"
endfunction
Run Code Online (Sandbox Code Playgroud)
这与Prince Goulash先前发布的功能略有不同.代码未经测试.它使用一个函数来解析:buffers命令的输出,其中包括隐藏缓冲区的'h'标记.如下所示:
function! DeleteHiddenBuffers()
redir => buffersoutput
buffers
redir END
let buflist = split(buffersoutput,"\n")
for item in filter(buflist,"v:val[5] == 'h'")
exec 'bdelete ' . item[:2]
endfor
endfunction
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5337 次 |
| 最近记录: |