Wie kann ich eigene Tastenkürzel in Emacs definieren?
- Einleitung
- Grundlagen der Tastenkürzel-Definition
- Wie schreibt man Tastenkürzel-Ausdrücke?
- Beispiele für eigene Tastenkürzel
- Tastenkürzel nur für bestimmte Modi definieren
- Zusammenfassung
Einleitung
Emacs ist ein sehr anpassbarer Texteditor, der es ermöglicht, eigene Tastenkürzel (auch Keybindings genannt) zu definieren. Dadurch können Arbeitsabläufe effizienter gestaltet und häufig genutzte Befehle schneller ausgeführt werden. In Emacs geschieht die Definition von Tastenkürzeln gewöhnlich durch das Schreiben von Emacs Lisp-Code in der Konfigurationsdatei ~/.emacs oder ~/.emacs.d/init.el.
Grundlagen der Tastenkürzel-Definition
Ein Tastenkürzel in Emacs ordnet eine Tastenkombination einem Befehl zu. Ein Befehl ist normalerweise eine Funktion, die entweder bereits in Emacs existiert oder vom Nutzer selbst definiert wurde. Die einfachste Form, ein Tastenkürzel zu definieren, ist der Befehl global-set-key. Dieser macht das Tastenkürzel global, also in allen Editormodi verfügbar.
Das Format von global-set-key ist wie folgt:
(global-set-key KEY-SEQUENCE FUNCTION)Dabei ist KEY-SEQUENCE der Ausdruck für die Tasten und FUNCTION die Funktion, die ausgeführt werden soll.
Wie schreibt man Tastenkürzel-Ausdrücke?
Tastenkürzel werden meist mit der Funktion kbd definiert, die den Tastenstring in das passende Format bringt. Die Syntax ist ähnlich der der Emacs-Hilfe. Beispiel: (kbd "C-x C-f") bedeutet, dass die Tastenkombination Control + x gefolgt von Control + f verwendet wird. Für Sondertasten gelten spezielle Kürzel, z.B. M für Meta (häufig Alt-Taste) und C für Control.
Beispiele für eigene Tastenkürzel
Angenommen, man möchte das Tastenkürzel F5 so belegen, dass es eine Funktion aufruft, um eine bestimmte Datei zu öffnen. Dafür kann man folgenden Code in die Emacs-Konfigurationsdatei schreiben:
(global-set-key (kbd "<f5>") (lambda () (interactive) (find-file "~/meineDatei.txt")))In diesem Beispiel wird eine anonyme Funktion (lambda) definiert, die interaktiv ist (d.h. vom Benutzer aufrufbar) und eine Datei öffnet.
Ein anderes Beispiel wäre, ein Tastenkürzel für einen vorhandenen Befehl wie save-buffer (Datei speichern) zu definieren:
(global-set-key (kbd "C-c s") save-buffer)Dies bindet Control + c gefolgt von s an den Befehl zum Speichern der aktuellen Datei.
Tastenkürzel nur für bestimmte Modi definieren
Man kann Tastenkürzel auch nur in bestimmten Modi (z.B. im Programmiermodus python-mode oder org-mode) definieren. Dazu verwendet man define-key und den jeweiligen Mode-Map.
Der Code sieht dann beispielsweise so aus:
(define-key python-mode-map (kbd "C-c C-r") python-shell-run-region)Dies definiert das Kürzel Control + c gefolgt von Control + r nur im Python-Modus.
Damit diese Definitionen wirksam werden, sollte man sicherstellen, dass der Modus geladen ist, oder die Definition innerhalb eines eval-after-load-Blocks oder eines Hooks platzieren.
Zusammenfassung
Das Definieren eigener Tastenkürzel in Emacs ist eine Frage des Schreibens von Emacs Lisp-Code in der Konfigurationsdatei. global-set-key bindet Tastenkürzel global, während define-key und Mode-spezifische Keymaps eine feinere Steuerung ermöglichen. Die Funktion kbd erleichtert die Definition von Tastenfolgen. So kann man Emacs effizient an die eigenen Bedürfnisse anpassen und die Produktivität erhöhen.
