2017-09-04 5 views
1

Voici une chose qui a été difficile à trouver. Dans Spacemacs (ou Emacs), est-il possible d'avoir une combinaison de touches donnée pour exécuter n'importe quelle autre combinaison de touches est supposée faire? En d'autres termes, est-il possible, par exemple, que la clé F5 s'exécute toujours quelle que soit la combinaison C-c C-c? Quelque chose comme:En Spacemacs (ou Emacs), est-il possible de lier des clés à d'autres clés?

(global-set-key [remap (kbd "F5")] (kbd "C-c C-c")) 

Permettez-moi de donner un exemple concret pour plus de clarté. La combinaison de touches C-c C-c est souvent utilisée pour envoyer le code entier du tampon courant à l'interpréteur/console, que ce soit pour envoyer le code du tampon à l'interpréteur Python au cas où le code réside dans un fichier .py ou pour l'envoyer à une console R avec package ESS dans un fichier .R. Maintenant, supposons que l'on souhaite avoir la clé F5 pour faire cela pour ces deux langages et peut-être même plus. Une solution évidente serait de simplement implémenter des raccourcis clavier qui sont différents pour chaque paquet. Cependant, il serait beaucoup plus facile de dire simplement: à chaque fois que l'on appuie sur F5, la commande associée à C-c C-c devrait être appelée.

Est-il possible d'avoir une telle chose? Je suis particulièrement intéressé à faire cela pour Spacemacs, mais bien sûr une réponse plus générique pour Emacs est acceptable.

Répondre

1

Essayez

(define-key key-translation-map [f5] (kbd "C-c C-c")) 

Il devrait résoudre votre problème.

+0

Solution presque parfaite! La mise en garde est que, pour une raison quelconque, cela ne fonctionne pas si la nouvelle combinaison de touches utilise les touches 'super' ou' hyper'. Par exemple: '(clé-translation-clé-clé-définition [H-f5] (kbd" C-c C-c "))' – Louis15

+0

Etes-vous sûr d'avoir correctement orthographié les touches? Je fais toujours 'C-h k ' et je vois ce que donne l'aide/mini buffer, puis je mets ça dans 'kbd'. Par exemple. utilisez '(kdb" ")' pour 'super-F5' (je ne peux pas donner un hyper exemple parce que je n'ai pas hyper). – jpkotta