soluciones solucion quimica que hacer ejercicios ejemplos efecto concentración concentracion como calcular vim

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.