Si je connais un nom de commande emacs, dit "goto-line"; que faire si je veux demander s'il y a des séquences de clés liées à cette commande?
Et vice versa, étant donné une séquence de touches, comment puis-je trouver son nom de commande?
Pour trouver simplement les raccourcis clavier d'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
Ce qui vous donnera des informations détaillées sur une fonction, y compris les raccourcis clavier pour elle.
C-h f variable-name
Les cartes-clés sont conservées dans des variables, mais les codes-clés sont stockés dans un format brut. Essayez C-h v isearch-mode-map
à titre d'exemple.
Pour plus d'aide sur l'obtention d'aide, vous pouvez taper
C-h ?
C-h w
(ou F1-w
): where-is
RET unnomdecommande RET
Fait exactement ce que vous demandez - répertorie les clés liées sans aucune information supplémentaire. :)
Pour obtenir interactivement 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 programmation la commande liée à une séquence de touches donnée, utilisez la fonction key-binding
ou lookup-key
qui prend une séquence de touches et renvoie sa commande liée. La fonction key-binding
c'est quoi C-h k
les usages.
(key-binding (kbd "C-h m"))
renvoie la commande liée à C-h m
en recherchant dans toutes les images clés actuelles. La fonction lookup-key
recherche dans une seule image clé:
(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-internal
est probablement la fonction à utiliser. Le nom de la fonction se terminant par internal
semble suggérer que ce n'est pas aux utilisateurs d'Emacs d'utiliser dans leurs fichiers init mais cette fonction ayant une docstring semble suggérer le contraire. Quiconque envisage d'utiliser where-is-internal
devrait d'abord vérifier si remappage des clés peut à la place atteindre son objectif.
Une alternative pour rechercher les clés 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.
Une vieille question, mais pour le bénéfice des nouveaux lecteurs, il existe d'autres façons agréables de voir les principales liaisons
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 tout 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 répertorie é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.
[~ # ~] note [~ # ~] : les exemples ci-dessous utilisent des packages supplémentaires (disponibles sur MELPA )
Cela vous montre les liaisons juste avant d'en avoir besoin. Saisissez un préfixe, par exemple C-x
ou C-c
et une liste des liaisons disponibles dans ce préfixe sera affichée.
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 lier which-key-show-top-level
à un accord de touches de votre choix, afin que vous puissiez voir les touches disponibles de n'importe où.
Par exemple, C-s
(isearch-forward
) a une carte clé étendue qui est souvent inconnue. par exemple. M-s o
démarre occur
en utilisant la chaîne de recherche actuelle, je ne savais pas à ce sujet depuis de nombreuses années d'utiliser Emacs. Ayant which-key
around m'a aidé à découvrir de nombreux joyaux rares dans Emacs.
https://github.com/justbur/emacs-which-key
La touche guide fonctionne de la même manière que which-key
Je vous conseille d'y jeter un œil pour comparer les fonctionnalités.