vim - solucion - ¿Cómo puedo eliminar todos los buffers ocultos?
solucion buffer (6)
Me gusta ejecutar Vim con ''hidden''
. A veces, sin embargo, tengo muchos buffers escondidos y me gustaría matarlos a todos. ¿Qué comando puedo usar para :bdelete
cada búfer oculto en la lista de búferes?
Esta es una forma ligeramente diferente de la función previamente publicada por el príncipe Goulash. El código no está probado. Utiliza una función para analizar la salida del comando :buffers
, que incluye el marcador ''h'' para buffers ocultos. Algo como a continuación:
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
Esto es lo que yo uso:
:bufdo bd
No hay necesidad de complementos ni nada.
Esto no está completamente probado, ¡así que utilícelo tentativamente al principio!
function! DeleteHiddenBuffers()
let i=1
let lastbuf=bufnr("$")
while i <= lastbuf
if buflisted(i) && bufwinnr(i) == -1
sil exe "bdelete" i
endif
let i=i+1
endwhile
endfunction
Nota buflisted
comprueba si el búfer existe, y bufwinnr
devuelve -1 si está oculto (es decir, no tiene una ventana designada). Puedes llamarlo usando
call DeleteHiddenBuffers()
o crear un mapeo.
Prueba la siguiente función:
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
Versión ampliada de @ZyX answer que omite buffers modificados y genera el número de buffers que se cerraron.
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
bufexplorer.vim puede administrar sus buffers vim. Aquí para descargar . puede utilizar :BufExplorer
para mostrar todos sus buffers vim en una ventana. Y presiona ''d'' para borrarlo.