Este artículo dice que "Emacs ha rehacido porque puede revertir la dirección mientras deshace, deshaciendo así la deshacer".
¿Qué significa esto? ¿Cómo puede un usuario 'rehacer' con Emacs?
Este artículo dice que "Emacs ha rehacido porque puede revertir la dirección mientras deshace, deshaciendo así la deshacer".
¿Qué significa esto? ¿Cómo puede un usuario 'rehacer' con Emacs?
Respuestas:
Versión corta: deshaciendo el deshacer. Si deshace y luego hace un comando de no edición como C-f, entonces el siguiente deshacer deshacerá el deshacer, lo que dará como resultado un rehacer.
Versión más larga:
Puede pensar en deshacer como operando en una pila de operaciones. Si realiza algún comando (incluso un comando de navegación como C-f) después de una secuencia de operaciones de deshacer, todas las operaciones de deshacer se envían a la pila de operaciones. Entonces, el siguiente deshacer deshace el último comando. Supongamos que tiene una secuencia de operación que se ve así:
Ahora te deshaces. Deshace la última acción, dando como resultado la siguiente lista:
Si hace algo diferente a deshacer en este punto, por ejemplo C-f, la pila de operaciones se ve así:
Ahora, cuando deshaces, lo primero que se deshace es deshacer. Resultando en su pila original (y estado del documento):
Si realiza un comando de modificación para romper la secuencia de deshacer, ese comando se agrega después de deshacer y, por lo tanto, es lo primero que se deshace después. Suponga que retrocede sobre "barra" en lugar de golpear C-f. Entonces hubieras tenido
Esta adición / re-adición ocurre hasta el infinito. Cuesta un poco acostumbrarse, pero realmente le da a Emacs un mecanismo de deshacer / rehacer altamente flexible y poderoso.
fuente
Deshacer: C-_
Para rehacer después de deshacer: C-g C-_
Escriba varias veces C-_ para rehacer lo que se ha deshecho C-_ Para rehacer un comando de emacs varias veces, ejecute su comando y luego escriba C-xzy luego escriba muchas veces en la ztecla para repetir el comando (interesante cuando desea ejecutar varias veces una macro)
fuente
C-u
, por ejemploC-u 8 *
(inserta ocho * donde está el cursor). Entonces puedes usarC-u x C-_
para deshacer x pasos.C-x e
), puede presionare
tantas veces como sea necesario para ejecutarla nuevamente.C-/
yC-x u
son combinaciones de teclas de deshacer alternativas, equivalentes aC-_
. PrefieroC-/
ya que es más fácil golpear.C-g C-_
"rehacerá después de deshacer", eso solo se aplica la primera vez que golpeas la combinación. Después de eso, repita su clave de deshacer sinC-g
. Entonces, para rehacer tres veces justo después de deshacer, escribaC-g C-_ C-_ C-_
. Si escribeC-g C-_ C-g C-_ C-g C-_
, simplemente irá dando vueltas, deshaciendo su rehacer de su deshacer ...C-/
C-/
C-/
C-g
C-/
C-g
C-/
C-/
. Tenga en cuenta queC-g
no se repite.C-g
C-/
C-g
C-/
C-/
Si ha presionado alguna tecla (ya sea escribiendo caracteres o simplemente moviendo el cursor) desde su último comando de deshacer, no hay necesidad de escribir
C-g
antes de su próximo deshacer / rehacer.C-g
es solo una tecla segura para golpear que no hace nada por sí misma, sino que cuenta como una tecla de no deshacer para indicar el final de su secuencia de deshacer. Presionando otro comando tal comoC-f
funcionaría también; es solo que movería el cursor desde donde lo tenía.Si golpeas
C-g
u otro comando cuando no querías hacerlo, y ahora estás deshaciendo en la dirección incorrecta, simplemente golpeaC-g
para invertir tu dirección nuevamente. Tendrá que deshacer todo el proceso de rehacer y deshacer accidentalmente antes de llegar a lo que desea deshacer, pero si sigue presionandoC-/
, eventualmente alcanzará el estado que desea. De hecho, cada estado en el que el buffer ha estado es accesible, si presionaC-g
una vez y luego presionaC-/
suficientes veces.Atajos alternativos para
undo
, exceptoC-/
, sonC-_
,C-x u
yM-x
undo
.Vea Deshacer en el Manual de Emacs para más detalles sobre el sistema de deshacer de Emacs.
fuente
Para aquellos que desean tener la funcionalidad de deshacer / rehacer más común, alguien ha escrito
undo-tree.el
. Proporciona la apariencia de deshacer sin Emacs, pero proporciona acceso a todo el 'árbol' del historial de deshacer.Me gusta el sistema de deshacer incorporado de Emacs, pero este paquete me parece muy intuitivo.
Aquí está el comentario del archivo en sí:
fuente
¡Cuidado con un capricho de deshacer árbol para rehacer !
Muchos populares "kits de inicio" (preludio, purcell, spacemacs) vienen con undo-tree. La mayoría (¿todo?) Incluso lo habilita automáticamente. Como se mencionó, undo-tree es una forma práctica de visualizar y recorrer el árbol de deshacer / rehacer. Preludio incluso le da un acorde clave (
uu
), y tambiénC-x u
.El problema es: deshacer-árbol parece destruir por defecto de Emacs y conocido vinculante para rehacer :
C-g C-/
.En su lugar, puede usar estas teclas simétricas para deshacer / rehacer :
Estos son útiles ya que a veces desea rehacer rápidamente sin abrir el visualizador.
fuente
Me resulta
redo.el
extremadamente útil para hacer / deshacer "normal", y generalmente lo asocio a CSz y deshago a Cz, así:Simplemente descargue el archivo, póngalo en su ruta de lisp y pegue lo anterior en su
.emacs
.fuente
Emacs 28 agrega un comando rehacer (llamado
undo-redo
).Si desea tener deshacer / rehacer más típico, se pueden usar los siguientes comandos.
fuente
Si desea rehacer la última operación, haga lo siguiente.
ESC
C + /
)fuente
Por defecto, rehacer en Emacs requiere presionar Cg, luego deshacer.
Sin embargo, es posible usar el deshacer incorporado de Emacs para implementar un comando rehacer también.
El paquete undo-fu , utiliza la funcionalidad de deshacer incorporada de Emacs para exponer tanto deshacer como rehacer.
fuente