10 Ejecutar Comandos por Nombre

Cada comando de Emacs tiene un nombre que puede usar para lanzarlo. Por conveniencia, muchos comandos también tienen teclas. Puede ejecutar esos comandos pulsando las teclas, o ejecutarlos por su nombre. La mayoría de los comandos de Emacs no tienen atajos de teclado, así que la única forma de ejecutarlos es por nombre. (Ver 50.3 Personalizar las Combinaciones de Teclas, para saber cómo configurarlas).

Por convención, un nombre de comando consiste en una o más palabras, separadas por guiones; por ejemplo, auto-fill-mode o manual-entry. Los nombres de comandos suelen usar palabras completas en inglés para que sean más fáciles de recordar.

Para ejecutar un comando por nombre, inicie con Alt-x (M-x), escriba el nombre del comando y termine con RETURN (RET). M-x usa el minibuffer para leer el nombre de la orden. La cadena M-x aparece al principio del minibuffer como prompt para recordarle que introduzca el nombre de la orden a ejecutar. RET sale del minibuffer y ejecuta el comando. Para más información sobre el minibuffer, véase 9 El Minibúfer.

Puede usar el completado para introducir el nombre del comando. Por ejemplo, para invocar el comando forward-char, puede escribir

Alt-x forward-char RETURN (M-x forward-char RET)

o

Alt-x forw TAB c RETURN (M-x forw TAB c RET)

Tenga en cuenta que forward-char es el mismo comando que se invoca con la tecla C-f. La existencia de una vinculación de teclas no le impide ejecutar el comando por su nombre.

Cuando M-x completa los comandos, ignora los que fueron declarados obsoletos en cualquier versión mayor anterior de Emacs; para éstos, tendrá que escribir su nombre completo. Se listan los comandos que fueron marcados como obsoletos en la versión actual de Emacs. (Los comandos obsoletos son aquellos para los que existen alternativas más nuevas y mejores, y que están programados para ser eliminados en alguna versión futura de Emacs).

Además, el completado M-x puede excluir comandos que no son relevantes para, y generalmente no pueden funcionar con, el modo mayor del buffer actual (ver 24.1 Modos Mayores (o Principales)) y los modos menores (ver 24.2 Modos Menores). Por defecto, no se excluye ningún comando, pero puede personalizar la opción read-extended-command-predicate para excluir esos comandos irrelevantes de los resultados de la finalización.

A la inversa, Emacs puede excluir todos los comandos excepto aquellos que son particularmente relevantes para el buffer actual. El comando Alt-Shift-s (M-S-x que significa «meta shift x») funciona igual que M-x, pero en lugar de listar todos (o la mayoría) de los comandos que Emacs conoce, sólo listará los comandos que han sido marcados como «pertenecientes» al modo mayor actual, o a cualquier modo menor habilitado.

Para cancelar M-x y no ejecutar un comando, teclee Ctrl-g (C-g) en lugar de introducir el nombre del comando. Volverá al nivel de comandos.

Para pasar un argumento numérico al comando que está invocando con M-x, especifique el argumento numérico antes de M-x. El valor del argumento aparece en el prompt mientras se lee el nombre del comando, y finalmente M-x pasa el argumento a ese comando. Por ejemplo, para pasar el argumento numérico 42 al comando forward-char puede escribir Ctrl-u 42 Alt-x forward-char RETURN (C-u 42 M-x forward-char RET).

Cuando el comando que ejecuta con M-x tiene un atajo de teclado, Emacs lo menciona en el área de eco después de ejecutar el comando. Por ejemplo, si teclea Alt-x forward-word (M-x forward-word), el mensaje dice que puede ejecutar el mismo comando tecleando Alt-f (M-f). Puede desactivar estos mensajes estableciendo la variable suggest-key-bindings en nil. El valor de suggest-key-bindings también puede ser un número, en cuyo caso Emacs mostrará el enlace durante tantos segundos antes de quitarlo de la pantalla. El comportamiento por defecto es mostrar el enlace durante 2 segundos.

Además, cuando suggest-key-bindings es distinto de nil, la lista de finalización de M-x muestra las combinaciones de teclas equivalentes para todos los comandos que las tienen.

Los comandos que no tienen atajos de teclado, aún pueden ser invocados después de teclear menos que su nombre completo en el prompt M-x. Emacs menciona estos atajos en el área de eco si son significativamente más cortos que el nombre completo del comando, y extended-command-suggest-shorter es distinto de nil. La configuración de suggest-key-bindings también afecta a estas sugerencias.

En este manual, cuando hablamos de ejecutar un comando por su nombre, a menudo omitimos el RET que termina el nombre. Así, podríamos decir Alt-x auto-fill-mode (M-x auto-fill-mode) en lugar de Alt-x auto-fill-mode RETURN (M-x auto-fill-mode RET). Mencionamos RET sólo para enfatizar, como cuando el comando va seguido de argumentos.

Alt-x (M-x) funciona ejecutando el comando execute-extended-command, que se encarga de leer el nombre de otro comando e invocarlo.