¿Cómo puedo borrar un registro / registros múltiples por completo?

16

Yo muy a menudo utilizo el :registerscomando para mostrar el contenido de todos los registros (no recuerdo lo que he puesto en donde, exactamente lo que el papel de "*, "., "%, etc son).

Especialmente porque configuré la "opción en la viminfoopción y, por lo tanto, mis registros persisten entre mis sesiones vim (que en general quiero, a corto plazo), con el tiempo la :registerslista se hace más y más larga y, por lo tanto, cada vez más engorrosa y llena con cosas muy viejas

Hasta ahora, la única forma en que he encontrado solucionar esto es editar manualmente algunos de los contenidos de registro 'antiguos' ~/.viminfo, lo que necesito hacer vim -u NONEy, por lo tanto, es un poco engorroso.

¿Existe una forma más limpia de borrar todos los registros, o borrar un registro específico, para que ya no aparezca en la :registerslista?

Andrew Ferrier
fuente

Respuestas:

12

En resumen, no hay una forma más limpia de borrar registros tan completamente que desaparezcan :reg.

En lugar de ~/.viminfoandar mal, tiendo a "descartar" los registros cuando realmente he terminado con ellos al ponerlos en blanco. Para borrar el aregistro, por ejemplo, escribo qaqpara establecer el aregistro en una cadena vacía. Equivalentemente, :let @a=''hace lo mismo.

Entonces, mirar la salida de :regtodavía es útil porque es muy fácil discernir entre registros vacíos y registros contenidos. Por otro lado, encuentro que esencialmente todos mis registros con nombre se encuentran en la fila superior (macros) o en la fila principal (cosas útiles para pegar), e incluso entonces solo he usado unos 15 registros con nombre.

Hubo un hilo en la lista de correo de vim hace unos años que también concluyó que no había una manera más fácil de borrar los registros.

davidlowryduda
fuente
5

Para aquellos que quieran eliminar el nombre del registro (decir a) de la :registerslista, no es una manera de hacerlo ahora. Ejecutar el comando :call setreg('a', []).

Descubrí esto de esta pregunta en StackOverflow del usuario @LucHermitte. Su respuesta detalla cómo borrar múltiples registros. Si quieres que esta tarea sea súper fácil, sé creativo con tu .vimrc:)

Jason Cemra
fuente
3

Pon esto en tu .vimrc:

command! WipeReg for i in range(34,122) | silent! call setreg(nr2char(i), []) | endfor

y borrar cada registro con :WipeReg

Si desea que eso suceda cada vez que inicie Vim, también agregue:

autocmd VimEnter * WipeReg
laktak
fuente
1
Gracias por el comando, aunque no funciona con registros de solo lectura como ".,"%, ":," #
Ashok