La versión más simple es: crear ~/.vim/undo-dir/
directorio y agregar lo siguiente a .vimrc
:
set undodir=~/.vim/undo-dir
set undofile
Sin embargo, no es perfecto y es mejor seguir leyendo. De la mía .vimrc
:
" Let's save undo info!
if !isdirectory($HOME."/.vim")
call mkdir($HOME."/.vim", "", 0770)
endif
if !isdirectory($HOME."/.vim/undo-dir")
call mkdir($HOME."/.vim/undo-dir", "", 0700)
endif
set undodir=~/.vim/undo-dir
set undofile
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
:
# m h dom mon dow command
43 00 * * 3 find /home/anthony/.vim/undo-dir -type f -mtime +90 -delete
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).