51 Salir y Abortar
C-g
)C-Break
(solamente MS-DOS)
Sale: cancela un comando en ejecución o parcialmente escrito.Ctrl-] (C-]
)
Aborta el nivel de edición recursivo más interno y cancelar el comando que lo invocó (
abort-recursive-edit
).
ESCESCESC (ESC ESC ESC
)
Sale o aborta la operación en curso, lo que tenga sentido (
keyboard-escape-quit
).
Alt-x top-level
(M-x top-level
)
Aborta todos los niveles de edición recursivos que se estén ejecutando en ese momento.
C-/
)C-x u
)C-_
)
Cancela un cambio realizado previamente en el contenido del búfer (undo
).Hay dos formas de cancelar una orden antes de que haya terminado: salir con C-g
, y abortar con C-]
o M-x top-level
. Salir cancela una orden parcialmente escrita, o una que todavía se está ejecutando. Abortar sale de un nivel de edición recursivo y cancela el comando que invocó la edición recursiva (ver 46 Niveles de Edición Recursiva).
Abandonar con C-g
es la forma de deshacerse de un comando parcialmente tecleado, o de un argumento numérico que no desea. Además, si está en medio de un comando que se está ejecutando, C-g
detiene el comando de una forma relativamente segura. Por ejemplo, si sale de un comando de matar que está tardando mucho, o bien todo su texto seguirá en el buffer, o bien todo estará en el anillo de muertes, o quizás ambas cosas. Si la región está activa, C-g
desactiva la marca, a menos que el modo Marca transitoria esté desactivado (véase 12.7 Desactivar el Modo de Marca Transitoria). Si está en medio de una búsqueda incremental, C-g
se comporta de forma especial; pueden ser necesarios dos caracteres C-g
sucesivos para salir de una búsqueda. Véase 16.1 Búsqueda Incremental, para más detalles.
Si teclea Ctrl-g (C-g
) en un minibúfer, esto termina el comando que lo abrió, cerrándolo. Si ese minibúfer no es el abierto más recientemente (lo que puede ocurrir cuando minibuffer-follows-selected-frame
es nil
(ver 9.1 Utilización del minibuffer), C-g
también cierra los abiertos más recientemente, saliendo de sus comandos asociados, después de pedirle confirmación.
En MS-DOS, el carácter C-Break
sirve para salir como C-g
. La razón es que no es factible, en MS-DOS, reconocer C-g
mientras se ejecuta un comando, entre interacciones con el Usuario. Por el contrario, es factible reconocer C-Break
en todo momento. Ver Uso del Teclado en MS-DOS.
C-g
funciona estableciendo la variable quit-flag
a t
en el instante en que se teclea Ctrl-g (C-g
); Emacs Lisp comprueba esta variable frecuentemente, y sale si no es nula. C-g
sólo se ejecuta realmente como un comando si lo teclea mientras Emacs está esperando entrada. En ese caso, el comando que se ejecuta es keyboard-quit
.
En un terminal de texto, si sale con C-g
por segunda vez antes de que se reconozca el primer C-g
, activa la función de escape de emergencia y vuelve al shell. Véase 52.7 Escape de Emergencia.
Hay algunas situaciones en las que no se puede salir. Cuando Emacs está esperando a que el sistema operativo haga algo, salir es imposible a menos que se tomen medidas especiales para la llamada de sistema particular dentro de Emacs donde ocurre la espera. Hemos hecho esto para las llamadas al sistema de las que es probable que los Usuarios quieran salir, pero es posible que se encuentre con un caso no tratado. En un caso muy común, esperar la entrada o salida de un archivo usando NFS- Emacs sabe cómo salir, pero muchas implementaciones de NFS simplemente no permiten a los programas de Usuario dejar de esperar por NFS cuando el servidor NFS está colgado.
Abortar con C-]
(abort-recursive-edit
) se utiliza para salir de un nivel de edición recursivo y cancelar el comando que lo invocó. Abandonar con C-g
no hace esto, y no podría hacerlo, porque se utiliza para cancelar un comando parcialmente tecleado dentro del nivel de edición recursivo. Ambas operaciones son útiles. Por ejemplo, si está en una edición recursiva y teclea Ctrl-u 8 (C-u 8
) para introducir un argumento numérico, puede cancelar ese argumento con C-g
y permanecer en la edición recursiva.
La secuencia ESC ESC ESC
(keyboard-escape-quit
) puede salir o abortar. (Lo definimos así porque ESC
significa «get-out» (salir) en muchos programas de PC.) Puede cancelar un argumento prefijo, borrar una región seleccionada, o salir de un Query Replace, como C-g
. Puede salir del minibuffer o de una edición recursiva, como C-]
. También puede salir de dividir el cuadro en múltiples ventanas, como con C-x 1
. Una cosa que no puede hacer, sin embargo, es detener un comando que se está ejecutando. Eso es porque se ejecuta como un comando ordinario, y Emacs no lo nota hasta que está listo para el siguiente comando.
El comando M-x top-leve
equivale a suficientes comandos C-]
para sacarlo de todos los niveles de edición recursiva en los que se encuentre; también sale del minibúfer si está activo. C-]
lo saca de un nivel cada vez, pero M-x top-level
lo saca de todos los niveles a la vez. Tanto C-]
como M-x top-level
son como todos los demás comandos, y a diferencia de C-g
, en que sólo tienen efecto cuando Emacs está preparado para un comando. C-]
es una tecla ordinaria y tiene su significado sólo por su vinculación en el mapa de teclas. Ver 46 Niveles de Edición Recursiva.
C-/
(undo
, deshacer) no es estrictamente hablando una forma de cancelar un comando, pero puede pensar en ello como cancelar un comando que ya ha terminado de ejecutarse. Véase 17.1 Deshacer, para más información sobre la función de deshacer.