Dado un nombre de comando emacs, ¿cómo encontraría las combinaciones de teclas? (y viceversa)

107

Si conozco el nombre de un comando de emacs, dice "goto-line"; ¿Qué pasa si quiero consultar si hay alguna secuencia de teclas vinculada a este comando?

Y viceversa, dada una secuencia de teclas, ¿cómo puedo encontrar su nombre de comando?

Motivo
fuente

Respuestas:

159

Para buscar combinaciones de teclas para un comando, puede usar la función "dónde está" de emacs help

C-h w command-name

Si se establecen varios enlaces para el comando, se enumerarán todos.

Para la inversa, dada una secuencia de teclas, puede escribir

C-h k key-sequence

Para obtener el comando que se ejecutaría.

Puede obtener información detallada sobre un comando, también cualquier función no interactiva definida, escribiendo

C-h f function-name

Lo que le brindará información detallada sobre una función, incluida cualquier combinación de teclas para ella, y

C-h v variable-name

le dará información sobre cualquier variable (vinculada). Los mapas de claves se mantienen en variables, sin embargo, los códigos de claves se almacenan en un formato sin procesar. Pruebe C-h v isearch-mode-mapcon un ejemplo.

Para obtener más ayuda sobre cómo obtener ayuda, puede escribir

C-h ?
Adam Rosenfield
fuente
Batir al golpe. D'oh.
dmckee --- ex-moderador gatito
51
También puede hacer C-h w <function name>para saber dónde está la clave, no la documentación completa. Por el contrario, también puede hacer C-h c <key sequence>para saber qué función está vinculada a una secuencia de teclas.
ShreevatsaR
7
también: Ch w suele estar vinculado a where-is.
Cheeso
2
Entonces, puedo dónde-está dónde-está cuando me olvido de Ch w. Eso es genial ! ;)
Sake
1
Para aquellos que se han ligado C-ha otra cosa en sus gestores de ventanas: C-h wes equivalente a M-x where-is. C-h kes equivalente a M-x describe-key. C-h fes equivalente a M-x describe-function. C-h ves equivalente a M-x describe-variable. C-h ?es equivalente a M-x help-for-help. También tenga en cuenta que f1se puede utilizar en lugar de C-h.
Ricardo
13

C-h w(o F1-w): where-isRET algún nombre de comando RET

Hace exactamente lo que está pidiendo: enumera las claves vinculadas sin información adicional. :)

Glen Best
fuente
13

Para enlazar interactivamente el comando a un atajo de teclado (o una secuencia de teclas en términos de Emacs), vea la respuesta seleccionada.

Para vincular mediante programación el comando a una secuencia de teclas determinada, utilice la función key-bindingo lookup-keyque toma una secuencia de teclas y devuelve su comando vinculado. La función key-bindinges lo que C-h kusa.

(key-binding (kbd "C-h m"))

devuelve el comando vinculado al C-h mbuscar en todos los mapas de teclas actuales. La función lookup-keybusca en un solo mapa de teclas:

(lookup-key (current-global-map) (kbd "TAB")) ; => indent-for-tab-command
(lookup-key org-mode-map (kbd "TAB")) ; => org-cycle
(lookup-key text-mode-map (kbd "TAB")) ; => nil
(lookup-key isearch-mode-map (kbd "TAB")) ; => isearch-printing-char

Para obtener programáticamente todas las secuencias de teclas vinculadas a un comando dado, where-is-internalprobablemente sea la función a usar. El nombre de la función que termina en internalparece sugerir que no es para que los usuarios de Emacs la utilicen en sus archivos de inicio, pero esta función que tiene una cadena de documentos parece sugerir lo contrario. Cualquiera que esté considerando el uso de where-is-internaldebe verificar primero si las claves de reasignación puede lograr su objetivo.

Una alternativa para encontrar las claves que están vinculadas a un comando específico (por ejemplo, forward-char) es substitute-command-keys(por ejemplo, (substitute-command-keys "\\[forward-char]")). Eso es especialmente útil en textos más extensos.

Jisang Yoo
fuente
Mirar la documentación de where-is-internalsugiere que está bien usarlo. Además, usamos convencionalmente un formato como where-is--internal(observe el guión doble) para funciones “privadas”.
GergelyPolonkai
2
El uso del sufijo -internalse describe allí: gnu.org/software/emacs/manual/html_node/elisp/… . Debe utilizarse para funciones internas de C.
Tobias
4

Una vieja pregunta, pero para beneficio de los nuevos lectores, hay otras formas agradables de ver las combinaciones de teclas

M-x describe-bindings

Enumera todos los enlaces disponibles actualmente, use isearch, ocurre, etc. para hacer un buen uso de esta lista.

M-x describe-prefix-map

Esto muestra todos los enlaces disponibles en el modo actual, puede usar el búfer de visualización como lo haría con cualquier otro búfer de Emacs de solo lectura, por ejemplo, puede buscar libremente cadenas, etc.

M-x describe-mode

Además de brindarle información general sobre el modo actual, también enumerará todas las combinaciones de teclas disponibles.

M-x describe-minor-mode

Se le pedirá que ingrese el nombre de un modo menor, y luego se le mostrará información y combinaciones de teclas para ese modo menor.

NOTA : Los siguientes ejemplos utilizan paquetes adicionales (disponibles en MELPA )

Cual llave

Esto le muestra los enlaces justo antes de que los necesite. Ingrese un prefijo, por ejemplo C-xoC-c y se mostrará una lista de los enlaces disponibles en ese prefijo.

También puede ver una lista de combinaciones de teclas disponibles en el modo actual mediante:

M-x which-key-show-top-level

Es útil enlazar which-key-show-top-level a un acorde clave de su elección, para que pueda ver las claves disponibles desde cualquier lugar.

Por ejemplo, C-s( isearch-forward) tiene un mapa de claves extenso que a menudo se desconoce. p.ejM-s o comienza a occurusar la cadena de búsqueda actual, no lo sabía durante muchos años usando Emacs. Teniendowhich-key cerca me ha ayudado a descubrir muchas gemas raras en Emacs.

https://github.com/justbur/emacs-which-key

Llave de guía

La tecla de guía funciona de la misma manera que which-key yo recomendaría echarle un vistazo para comparar funciones.

https://github.com/kai2nenobu/guide-key

ocodo
fuente