La última noticia en vim.org habla sobre el uso de 'unofile' para guardar su historial y deshacer los cambios incluso después de un reinicio:
Una característica que disfruto usando yo mismo no es conocida por muchos usuarios, como descubrí el fin de semana pasado. Además de deshacer con tantos niveles como desee, Vim también ofrece almacenar la información de deshacer en un archivo. Para que pueda salir de Vim, reiniciar su computadora y aún deshacer los cambios realizados. Vea la ayuda para 'unofile'. (Bram Moolenaar)
¿Cómo puedo habilitar y usar esta función?
persistent-state
undo-redo
Deshacer
fuente
fuente
Respuestas:
La versión más simple es: crear
~/.vim/undo-dir/
directorio y agregar lo siguiente a.vimrc
:Sin embargo, no es perfecto y es mejor seguir leyendo. De la mía
.vimrc
:Prefiero no saturar directorios aleatorios con archivos de deshacer. Entonces configuré la
undodir
opción, que los pone a todos en un directorio de deshacer. Eso deja un problema: soy vago y no tengo ganas de crear ese directorio en todas mis máquinas (uso un sistema de control de versiones para sincronizar mi.vimrc
en un montón de máquinas). Afortunadamente, es bastante fácil hacer que Vim verifique y cree los directorios si no existen.Tenga en cuenta también el
0700
modo en el directorio de deshacer (eso es permisos completos para el propietario, sin permisos para nadie más). Qué archivos he editado, cuándo, etc. deben permanecer privados. Y como este es un directorio al que solo puedo acceder, no tengo que preocuparme de que alguien más ponga un enlace simbólico allí, o su propio archivo para deshacer, o lo que sea, ya que tendría que preocuparse por usar un directorio temporal del sistema.Finalmente, al no ser un directorio temporal del sistema, no está sujeto a la política de limpieza de archivos temporales del sistema. A menudo, eso es bastante corto, una semana más o menos. Pero para evitar que crezca para siempre, pongo lo siguiente en mi
crontab
:Entonces, después de 90 días de no ser modificado, se eliminan. (Honestamente, no son realmente tan grandes, podría dejarlos para siempre con lo barato que es el disco. Pero considere también su propia privacidad si su máquina se ve comprometida alguna vez).
fuente
mkdir()
función admite la creación de múltiples estructuras de directorios con la"p"
opción de{path}
parámetro. Entonces, el script anterior se puede simplificar un poco. Usarcall mkdir($HOME."/.vim/undo-dir", "p", 0700)
trabajos para mí en Vim 7.4.160 al menos.