Étant donné le nom d'une commande emacs, comment trouveriez-vous les raccourcis clavier? (et vice versa)

107

Si je connais un nom de commande emacs, dit, "goto-line"; Que faire si je veux demander s'il existe des séquences de touches liées à cette commande?

Et vice versa, étant donné une séquence de touches, comment puis-je trouver son nom de commande?

Saké
la source

Réponses:

159

Pour trouver simplement les raccourcis clavier pour une commande, vous pouvez utiliser la fonction "où est" de l'aide emacs

C-h w command-name

Si plusieurs liaisons sont définies pour la commande, elles seront toutes répertoriées.

Pour l'inverse, étant donné une séquence de touches, vous pouvez taper

C-h k key-sequence

Pour obtenir la commande qui s'exécuterait.

Vous pouvez obtenir des informations détaillées sur une commande, ainsi que sur toute fonction non interactive définie, en tapant

C-h f function-name

Qui vous donnera des informations détaillées sur une fonction, y compris les raccourcis clavier correspondants, et

C-h v variable-name

vous donnera des informations sur toute variable (liée). Les key-maps sont conservés dans des variables, mais les codes clés sont stockés dans un format brut. Essayez C-h v isearch-mode-mapun exemple.

Pour obtenir de l'aide supplémentaire, vous pouvez taper

C-h ?
Adam Rosenfield
la source
Battez le coup de poing. D'oh.
dmckee --- ex-moderator chaton
51
Vous pouvez également faire C-h w <function name>pour savoir exactement où se trouve la clé, pas la documentation complète. Inversement, vous pouvez également C-h c <key sequence>savoir quelle fonction est liée à une séquence de touches.
ShreevatsaR
7
aussi: Ch w est généralement lié à where-is.
Cheeso
2
Donc, je peux où-est où-est quand j'oublie Ch w. C'est génial ! ;)
Sake
1
Pour ceux qui ont lié C-hà autre chose dans leurs gestionnaires de fenêtres: C-h wéquivaut à M-x where-is. C-h kéquivaut à M-x describe-key. C-h féquivaut à M-x describe-function. C-h véquivaut à M-x describe-variable. C-h ?équivaut à M-x help-for-help. Notez également que f1peut être utilisé à la place de C-h.
Ricardo
13

C-h w(ou F1-w): where-isRET somecommandname RET

Fait exactement ce que vous demandez - répertorie les clés liées sans informations supplémentaires. :)

Glen Best
la source
13

Pour obtenir de manière interactive la commande liée à un raccourci clavier (ou à une séquence de touches en termes Emacs), consultez la réponse sélectionnée.

Pour obtenir par programme la commande liée à une séquence de touches donnée, utilisez la fonction key-bindingou lookup-keyqui prend une séquence de touches et renvoie sa commande liée. La fonction key-bindingest ce qui C-h kutilise.

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

renvoie la commande liée C-h men recherchant dans tous les keymaps actuels. La fonction lookup-keyrecherche dans un seul keymap:

(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

Pour obtenir par programme toutes les séquences de touches liées à une commande donnée, where-is-internalest probablement la fonction à utiliser. Le nom de la fonction se terminant par internalsemble suggérer que ce n'est pas aux utilisateurs d'Emacs de l'utiliser dans leurs fichiers init, mais cette fonction ayant une docstring semble suggérer le contraire. Quiconque envisage d'utiliser where-is-internaldoit d'abord vérifier si le remappage des clés peut à la place atteindre son objectif.

Une alternative pour trouver les touches qui sont liées à une commande spécifique (par exemple, forward-char) est substitute-command-keys(par exemple, (substitute-command-keys "\\[forward-char]")). Cela est particulièrement utile dans les textes plus volumineux.

Jisang Yoo
la source
L'examen de la documentation de where-is-internalsuggère que vous pouvez l'utiliser. Aussi, nous utilisons classiquement un format comme where-is--internal(notez le double tiret) pour les fonctions «privées».
GergelyPolonkai
2
L'utilisation du suffixe y -internalest décrite: gnu.org/software/emacs/manual/html_node/elisp/… . Il doit être utilisé pour les fonctions C internes.
Tobias
4

Une vieille question, mais pour le bénéfice des nouveaux lecteurs, il existe d'autres façons intéressantes de voir les raccourcis clavier

M-x describe-bindings

Répertorie toutes les liaisons actuellement disponibles, utilisez isearch, occur, etc. pour faire bon usage de cette liste.

M-x describe-prefix-map

Cela montre toutes les liaisons disponibles dans le mode actuel, vous pouvez utiliser le tampon d'affichage comme vous le feriez pour n'importe quel autre tampon Emacs en lecture seule, par exemple, vous pouvez rechercher librement des chaînes, etc.

M-x describe-mode

En plus de vous donner des informations générales sur le mode actuel, il listera également toutes les raccourcis clavier disponibles.

M-x describe-minor-mode

Vous serez invité à entrer le nom d'un mode mineur, puis à afficher les informations et les raccourcis clavier pour ce mode mineur.

REMARQUE : les exemples ci-dessous utilisent des packages supplémentaires (disponibles auprès de MELPA )

Quelle clé

Cela vous montre les liaisons juste avant d'en avoir besoin. Entrez un préfixe, par exemple C-xou C-cet une liste des liaisons disponibles dans ce préfixe s'affichera.

Vous pouvez également afficher une liste des raccourcis clavier disponibles dans le mode actuel en utilisant:

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

Il est utile de se lier which-key-show-top-levelà un accord clé de votre choix, afin que vous puissiez voir les clés disponibles de n'importe où.

Par exemple, C-s( isearch-forward) a une carte de clés étendue qui est souvent inconnue. par exemple, M-s ocommence à occurutiliser la chaîne de recherche actuelle, je ne savais pas à ce sujet depuis de nombreuses années d'utilisation d'Emacs. Avoir which-keyautour de moi m'a aidé à découvrir de nombreux joyaux rares à Emacs.

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

Clé de guidage

La clé de guide fonctionne à peu près de la même manière que which-keyje recommanderais de l'examiner pour comparer les fonctionnalités.

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

ocodo
la source