Necesitaba editar muchos archivos recientemente para un pequeño cambio en cada archivo. Para acceder a cada archivo, examiné NERDtree y abrí un archivo tras otro. A medida que abría más y más archivos, noté que mi uso de memoria creció MUCHO. Cerrar vim me devolvió un montón de memoria.
Tengo bastantes complementos instalados, pero creo que la razón por la que mi uso de memoria creció tan drásticamente se debió a la cantidad de búferes que había abierto después de algunas ediciones.
¿Hay alguna manera de limitar el número de buffers que vim permite que se abran al mismo tiempo, cerrando automáticamente los viejos buffers con respecto al tiempo de edición?
b:variables
peros:plugin[bufid]
si el encargado del complemento prefiere no contaminar elb:
"espacio de nombres" público . En este caso, eliminar el búfer no necesariamente recopilará todas las variables / memoria relacionadas.Lo siguiente debería responder a su pregunta.
Esto se debe colocar en un complemento. Luego, tendrás que elegir cómo usarlo.
fuente
No estoy seguro de cómo obtener los buffers más antiguos con respecto al tiempo de edición, pero uno podría, en cambio, tratar de cerrar los buffers más antiguos sin editar. Algo como:
Notas:
vim.buffers
es una lista de cada búfer abierto en la sesión actual, por lo que también incluye búferes no listados. No es lo mismo que la lista devuelta por:ls
.options['buflisted']
.options['modified']
nos permite verificar si el búfer está modificado.N
es la cantidad de búferes listados no modificados que desea abrir.Gracias a la respuesta de Luc Hermitte de la que aprendí cómo obtener las marcas de tiempo, podría usar lo siguiente en su lugar, para eliminar primero al inactivo más antiguo:
fuente
:let buffers = filter(range(0, bufnr('$')), 'buflisted(v:val) && ! getbufvar(v:val, "&modified")')
+:exe 'bw '.join(buffers, ' ')
bw
La ayuda del IIRC dice que no debe usarlo "a menos que sepa lo que está haciendo". Yo no. :):bw
, y nunca:bd
. Nunca he visto el punto de eliminar casi todo de un búfer, pero en realidad no todo.