Combinar los cambios externos realizados durante la edición

10

Si se realizan cambios externos en un archivo que se está editando en Vim, entiendo que puedo volver a cargar el contenido del archivo :edit. Pero, suponga que (internamente) he realizado cambios en el archivo que quiero preservar. ¿Hay alguna forma de integrar los dos conjuntos de cambios (externo e interno)? Por lo que entiendo, :editsimplemente toma los cambios externos.

fuzzybear3965
fuente
3
Tiene que leer :h autoread? ¿Es eso lo que estás buscando?
statox
2
:autoreadlee los cambios externos, pero en el caso de que se realicen cambios en el archivo que se está leyendo automáticamente, vim me notificará que se han realizado cambios externos al archivo desde que hice mis ediciones internas. Estoy buscando una manera de fusionar los cambios externos con los internos.
fuzzybear3965
55
¿Está buscando :h :DiffOrig?
Christian Brabandt
@ChristianBrabandt, nunca es demasiado tarde, ¿verdad? Esta fue una gran respuesta. No sabía que esto existía.
fuzzybear3965

Respuestas:

3

Para profundizar en el comentario de Christian Brabandt , aquí hay una descomposición del DiffOrigcomando:

Comando completo:

command DiffOrig vert new | set bt=nofile | r # | 0d_ | diffthis
    \ | wincmd p | diffthis

Descomposición:

command DiffOrig        " create a new command named DiffOrig
vert new                " open a new buffer splitted vertically
| set bt=nofile         " set buffer type to scratch 
| r #                   " read the alternate buffer (opened file to diff)
| 0d_                   " delete the first line
| diffthis              " diff the current buffer
| wincmd p              " move cursor to opened file 
| diffthis              " diff the current buffer

Una versión alternativa usa la ++editopción para la lectura, mantiene los valores de las opciones como si editara un archivo.

Referencias

nobe4
fuente