2009-03-09 17 views
30

A menudo ocurre que se modifica un búfer de archivo (duh!). Antes de salir, emacs pregunta si guardar los cambios. Ahora sería interesante saber qué cambió realmente. ¿Hay una manera de averiguarlo?Modificaciones de la memoria resaltada

+1

Ver http://stackoverflow.com/questions/331569/diff-save-or-kill-when-killing-buffers-in-emacs –

Respuesta

1

En este caso escribo deshacer para ver el último cambio (por lo general, un carácter callejero que se escribió en la ventana incorrecta, ya que guardo temprano y con frecuencia).

Sería bueno si hubiera alguna otra indicación de los cambios actuales, p. en el borde como diff rápido en editores de texto Eclipse.

+0

Y si el deshacer se deshace de un cambio importante, simplemente puede ingresar algunos Carácter y ejecutar deshacer dos veces, gracias a la función de deshacer de Emacs, que es más poderosa que la mayoría de los editores. –

17

Uso diff-buffer-with-file, y selecciono el archivo del que vino el búfer (que de todos modos es el predeterminado para el comando ... solo presione enter).

También puede usar highlight-changes-mode, aunque esto no hará un seguimiento de los cambios hasta que lo encienda, por lo que no es tan útil si quiere ver qué cambió cuando está cerrando un archivo que no ha estado este modo :-)

29

a partir de Emacs 22.1 (al menos), 'save-buffers-kill-emacs (la unión de Cx Cc defecto) solicita cada búfer no salvo que tiene un archivo. Escriba d cuando se le solicite que guarde y vea la diferencia.

De la documentación de ayuda:

Save some modified file-visiting buffers. Asks user about each one. 
You can answer `y' to save, `n' not to save, `C-r' to look at the 
buffer in question with `view-buffer' before deciding or `d' to 
view the differences using `diff-buffer-with-file'. 

Si nos fijamos en el indicador, debe decir algo como:

Save file /path/to/file.txt? (y, n, !, ., q, C-r, d, or C-h) 

Typing Ch le da una pequeña descripción más detallada (pero d es lo que está pidiendo):

Type SPC or `y' to save the current buffer; 
DEL or `n' to skip the current buffer; 
RET or `q' to give up on the save (skip all remaining buffers); 
C-g to quit (cancel the whole command); 
! to save all remaining buffers; 
C-r to view this buffer; 
d to view changes in this buffer; 
or . (period) to save the current buffer and exit. 
8

Puede tener habilitado highlight-changes-mode. Mostrará todos los cambios en rojo. Sin embargo, no le mostrará los cambios en el espacio en blanco y marcará las eliminaciones solo con un _ rojo. Vea también http://www.emacswiki.org/emacs/TrackChanges.

+0

Esto es increíble, gracias. – CodyChan

+0

http://stackoverflow.com/a/21084181/1528712 Esto hará que la marca de cambio se muestre en el margen izquierdo. – CodyChan

0

Uso goto-chg para cosas como esas. No es perfecto, pero siempre es suficiente para refrescar mi memoria sobre el cambio que hice y lo olvidé rápidamente.

2

Encontré esto post about tracking changes por djcb más útil con respecto a los cambios de seguimiento en Emacs. El truco es añadir lo siguiente a su .emacs:

;; higlight changes in documents 
(global-highlight-changes-mode t) 
(setq highlight-changes-visibility-initial-state nil); initially hide 

y luego alternar highlight-cambios-visible-modo cuando desee para ver qué ha cambiado.

Cuestiones relacionadas