Cada vez que salgo de una sesión en vim al perder mi conexión, estoy bastante lleno de dred (y aún así sigo usando vim ... qué masoquista debo ser) porque cuando abro mis archivos de nuevo, un montón de intercambio- los archivos están esperando para intentar destruir mi trabajo. ¿Cuáles son las mejores prácticas para trabajar con archivos de intercambio vim? ¿Simplemente eliges el más nuevo? Si el archivo funciona de la manera esperada, ¿simplemente elimina los archivos de intercambio? ¿Cómo te deshaces de ellos?
14
Respuestas:
¡No entres en pánico!
La recuperación de archivos siempre es segura, porque vim nunca escribe ningún cambio hasta que los escribe usted mismo. Por lo tanto, recuperarse de un archivo de intercambio y luego cerrar sin guardar no cambiará nada.
Organiza tus archivos de intercambio:
Obtenga vim para colocar todos sus archivos de intercambio en el mismo lugar, para que siempre sepa dónde están:
o donde prefieras El uso
//
al final del nombre de archivo hace que vim use rutas de archivo absolutas para los nombres de los archivos de intercambio para que no tenga colisiones de nombres. Asegúrese de que el directorio exista, o vim no lo usará (no lo creará para usted).Nota: Esto solo funciona en variables de entorno, si desea usar una variable vimscript, entonces necesitamos usar algo de
:execute
magia:Diferencia las diferencias:
La ayuda de Vim sugiere un comando muy útil para usar en esta situación:
:DiffOrig
. No es un comando vim predeterminado , así que copie la implementación desde:h :DiffOrig
su vimrc. (también está en$VIMRUNTIME/defaults.vim
si tienes vim8). Ahora, puede recuperar el archivo y simplemente ejecutar DiffOrig para obtener un vimdiff de lo que ha cambiado desde la versión no modificada.Si desea comparar el contenido de varios archivos de intercambio, recupere su archivo con cada archivo de intercambio diferente y luego escriba el resultado en archivos temporales. Ahora cargue los archivos y ejecútelos
:diffthis
en cada archivo, realice los cambios que desee, vuelva a escribir en el archivo original y elimine los archivos temporales e intercambiables.Comandos útiles:
:swapname
: obtiene el nombre que vim está usando para el archivo de intercambio para el búfer actual (:h :swapname
):recover
: recupera el archivo seleccionado, igual que cuando inicia vim y presiona R(:h :recover
)Mira la ayuda:
Vim tiene una sección entera del manual de usuario en la recuperación:
:usr_11.txt
ayuda de referencia de Vim en los archivos de intercambio:
:h swap-file
,h recovery
Ayuda en la opción de directorio (para establecer la ubicación del archivo de intercambio):
:h 'directory'
Editar: ejemplo modificado para configurar el directorio, como se señala en los comentarios de @B Layer
fuente
exec
...set directory^=$HOME/.vim/swap//
funciona bien siempre que$HOME
sea una variable de entorno inicializada. Ver:h expand-env
. También funciona condictionary
,undodir
ybackupdir
por nombrar algunos.Personalmente, he desactivado los archivos de intercambio y copia de seguridad, ya que tiende a crear archivos de intercambio y archivos de copia de seguridad en todas partes y con frecuencia crea conflictos. El deshacer persistente de Vim ha sido mucho más confiable y libre de errores.
Vim actualmente tiene deshacer persistente, es un método de copia de seguridad mucho más fino. Cada vez que presiona Esc, se captura el estado actual del archivo.
Puede usar
:undolist
, o complementos como gundo , o deshacer-árbol para explorar su historial de deshacer.Para usar vim de esta manera:
En la cáscara:
En vim
Para desactivar los archivos de intercambio:
:set noswapfile
fuente
'writebackup'
aborda otro problema). Tener habilitado el deshacer persistente no ayudará si su computadora falla. Usted puede argumentar que los archivos de intercambio no son necesarias por otras razones (la estabilidad del sistema operativo moderno, la existencia de UPSes), pero que no lo han hecho en esta respuesta. 2. ¡la configuración'undodir'
no permite deshacer persistente! Tienes que configurar'undofile'
para esto