Emacs Erweiterungen für Vielschreiber

In diesem Artikel stelle ich Ihnen mein Emacs-Setup vor, eine nach und nach gewachsene Sammlung von packages und Konfigurationen, die Emacs mit dem Bedienkomfort ausstattet, wie ich ihn mir wünsche. Auf dem Weg dahin habe ich eine Menge ähnlicher packages getestet, eigene Tastenkombinationen angelegt, alles Mögliche ausprobiert und Vieles wieder verworfen. Hier finden Sie eine Auswahl der wichtigsten Erweiterungen, die sich aus meiner Sicht in idealer Weise kombinieren lassen.

Einen großen Teil der packages nutze ich, weil sie mir einen gewissen Bedienkomfort bieten. Z. B. schreibe ich gerne einfach mal drauflos, ohne mir Gedanken darüber zu machen, ob ich den Text für ein Ebook oder für eine Webseite verwenden werde. Da ich meine Texte mit Org mode schreibe, klappt das sehr gut.

Vermutlich nicht nur in meinem Fall ist Org Mode so oder so das Arbeitstier schlechthin. Doch bevor ich auf die packages eingehe, möchte ich kurz ein wichtiges Konzept des Emacs unter die Lupe nehmen, die Emacs-Modes.

Modes

Mode ist die englische Bezeichnung für Modus. Gemeint ist damit hier ein definierter Betriebszustand, der bestimmte Bearbeitungsfunktionen in einem Puffer zur Verfügung stellt (ab jetzt bleibe ich bei der englischen Bezeichnung mode und buffer). Dabei unterscheidet man zwischen major und minor modes.

Major und minor modes

Emacs modes kann man in drei große Gruppen unterteilen. In der ersten Gruppe finden sich modes für die Bearbeitung von reinem Text (und Auszeichnungssprachen wie html, md, org etc.), die zweite Gruppe modes ist für bestimmte Programmiersprachen (C, C++, Python etc.) gedacht und die dritte Gruppe modes für dired (ein Dateimanager), für shell Interaktionen und spezielle Nachrichten (messages). Die meisten Programmfunktionen des Emacs finden sich in diesen drei Gruppen wieder und werden in einzelnen modes zusammengefasst: html-mode, text-mode, org-mode und so weiter.

Jeder buffer wiederum besitzt einen, und nur einen dieser modes als Hauptmodus, major mode genannt. Am besten stellt man sich einen major mode wie ein eigenständiges Programm vor, das die benötigten Hauptfunktionen enthält.

Mit M-x name-des-majormode könnten Sie zwar selbst einen mode auswählen aber das ist nur in Ausnahmefällen erforderlich, denn Emacs legt diesen automatisch anhand des Dateityps fest. Wenn Sie z. B. eine Datei mit der Endung .txt laden, schaltet Emacs den Puffer dieser Datei auf text-mode und stellt die entsprechenden Programmfunktionen für die Arbeit mit Texten sowie eventuell vorhandene Tastenkombinationen zur Verfügung.

Wie bereits erwähnt, muss sich der Inhalt des buffers nicht auf Texte beschränken. Ein buffer kann auch eine shell enthalten, eine Bilddatei, eine Verzeichnisansicht, kurz, jede mögliche Interaktion mit dem Programm. Deshalb kann Emacs solche non-file-buffer erkennen und anhand des Typs ebenfalls den geeigneten mode auswählen.

Jeder buffer kann außerdem mehrere minor modes besitzen. Sie dienen meist dazu, zusätzliche Funktionen einzubinden.

Die aktuellen modes werden in der modeline, der am unteren Bildschirmrand herborgehobenen Zeile, dargestellt.

Wie gesagt, Sie müssen sich das alles jetzt nicht merken. Es ist aber gut wenn Sie davon schon mal gehört haben, und in bestimmten Situationen wissen, worum es geht.

Übrigens merken – wenn Sie hoffentlich das Tutorial bearbeitet haben, werden Sie wissen, dass für viele Befehle auch kurze Tastenkombinationen existieren. Die kann man sich alle unmöglich sofort einprägen. Doch es gibt ein package, das hierbei sehr hilfreich ist.

Which-key

Which-key ist ein package, dass zu Tasteneingaben in einem Popupfenster die möglichen weiteren Tastenfolgen anzeigt. Angenommen, Sie beginnen die Eingabe mit C-x, listet das Programm die weiteren möglichen Tastenfolgen auf. mit which-key shortcuts lernen

Das hat mir beim Lernen von Tastaturkürzeln sehr geholfen. Ich nutze das package bis heute, denn die Tastenkombinationen selten genutzter Befehle vergesse ich schon mal regelmäßig. Das Popupfenster hat oft mehrere Seiten, da nicht alle Tastenfolgen auf einmal angezeigt werden können. Vor- und zurückblättern kann man mit C-h n bzw. C-h p.

Installieren Sie which-key mit use-package, können Sie unter dem Keyword :config (Sie erinnern sich?) unter anderem auch gleich den which-key-mode einschalten. (which-key-setup-side-window-bottom) legt die Position der Popupfensters fest. Weitere Konfigurationsmöglichkeiten finden Sie auf der Internetseite. (unten)

(use-package which-key
   :config
   (which-key-mode)
   (which-key-setup-side-window-bottom))

Vor allem beim Einsatz umfangreicher modes, wie etwa dem folgenden, ist which-key eine echte Hilfe.

Org mode

Org Mode ist ein mächtiger major mode der hervorragend geeignet ist, auch sehr umfangreiche Texte durch hierarchisch gegliederte Zwischenüberschriften zu strukturieren. Tatsächlich aber ist Org Mode eher ein komplettes Redaktionssystem, mit dem ganzen Drumherum, das man sich für das produktive Schreiben nur wünschen kann; zur Planung, Erstellung und Veröffentlichung schriftlicher Werke; mit integrierter Terminverwaltung, Todo-Listen, Exportfunktionen für HTML-, LaTex-, Open Document- und Markdowndateien. Die Liste lässt sich durch Integration weiterer Backends noch reichlich verlängern. Mit einem geeigneten package ist auch der Export als komplette Webseite (z. B. als Hugo-Markdown) ein Kinderspiel. Und selbstverständlich arbeitet auch Org mode mit reinen Textdateien.

Dieser mode ist so umfangreich, dass ich hier nicht mal ansatzweise versuche, so etwas wie eine Anleitung zu geben. Da gibt es wirklich sehr gute Tutorials und Howtos im Internet, auf die ich unten verlinke.

Ich nutze Org mode vor allem deshalb sehr gerne, weil es die sehr ausgereiften, leistungsfähigen Exportmöglichkeiten des Emacs unterstützt. Texte für Ebooks schreibe ich auf dieselbe Weise, wie diesen Text, den ich gerade für das Bastler-Archiv schreibe. Möchte ich den Text als Markdown für hugo exportieren, einem Programm, dass ich für die Erstellung statischer Webseiten nutze, setze ich in den Kopf der Seite lediglich ein paar Zeilen mit Anweisungen für das plugin ox-hugo. Das ermöglicht mir die Konfiguration aller wichtigen Einstellungen für den Export in meine lokale Webseitenstruktur, die ich anschließend auf den Server hochlade.

Aber nicht nur Org mode, sondern alle verwendeten packages zusammen, machen Emacs für mich zu dem besten Werkzeug, das ich jemals zum Schreiben genutzt habe; Bleistift und Papier einmal ausgenommen. :)

Writeroom-mode

Wenn ich an Artikeln für Webseiten arbeite, nutze ich sehr gerne writeroom-mode. Dieser mode blendet alles außer dem Text auf dem Bildschirm aus. Hintergrundfarbe, Breite, Position und andere Eigenschaften des Textes kann ich anpassen. Alle Funktionen des Programms stehen aber weiter zur Verfügung. Notizen, Listen und ähnliches Material, das ich für das Schreiben benötige, halte ich dabei in buffern bereit, die ich auf Tastendruck ein- und ausblenden kann. Das gefällt mir sehr gut und hat meinen Arbeitsstil positiv beeinflusst.

Treemacs

Ein Datei-explorer, der auf Tastendruck am Bildschirmrand Baumansichten von Verzeichnissen einblenden kann. Besonders nützlich finde ich die Möglichkeit, mehrere solcher Verzeichnissbäume (für unterschiedliche Projekte / Verzeichnisse mit Artikelmaterial oÄ.) anzulegen. Treemacs bietet ein paar praktische Dateifunktionen zum Öffnen, Kopieren, löschen usw. Von Org-Dateien kann man direkt in der Baumansicht die komplette Hierarchie der nodes aufklappen. Sehr praktisch, sehr zu empfehlen.

Perspective

Vielleicht haben Sie bereits festgestellt, dass die Bufferliste gelegentlich durch die Anzahl der darin aufgelisteten buffer etwas unübersichtlich wird. Mit Perspective kann man verschiedene Arbeitsbereiche anlegen, wobei jeder Arbeitsbereich über seinen eigenen Satz buffer verfügt, die in anderen Arbeitsbereichen nicht auftauchen.

Da ich bei Textrecherchen nicht selten mit mehreren geteilten Ansichten arbeite, nutze ich das package, weil es außerdem nicht nur geöffnete Dateien als Bookmark abspeichern kann, sondern auch die Fensterkonfiguration beim Öffnen des Bookmarks automatisch wieder herstellt. Obwohl die Arbeit mit verschiedenen perspectives im ersten Moment sehr ungewohnt ist: Auch sehr empfehlenswert.

Org-roam

Org-roam ist eine Art Wiki. Damit verlinke ich intern Texte unter bestimmten Stichworten. Dadurch entsteht im Laufe der Zeit eine Art Zettelkasten, der mir bei Recherchen bisher sehr nützlich war. Jede Notiz, die ich aufheben und wiederfinden möchte, sichere ich mit Org-roam in einem gesonderten Verzeichnis und vergebe dabei tags für eine bessere thematische Übersicht. Die Verlinkungen der Dateien speichert Org-roam in einer kleinen Sqlite-Datenbank.

So haben sich im Laufe der Zeit sehr viele Dateien im Org-roam Verzeichnis angesammelt. Das folgende package hilft, nicht nur im Org-roam Verzeichnis, schnell die gewünschte Datei finden.

Vertico

Emacs enthält eine Komplettierungsfunktion die beim Laden von Dateien oder packages und bei Suchvorgängen sehr hilfreich ist. Sie geben ein paar Buchstaben des Namens vor und nach Drücken der TAB-Taste erscheint ein Popupfenster mit einer Liste der geeigneten Kandidaten. Das ist schon mal nicht schlecht. Mit der Erweiterung vertico geht die Auswahl aus umfangreichen Listen jedoch sehr viel einfacher und schneller.

Vertico zeigt am unteren Bildschirmrand eine vertikale Liste aller Kandidaten. Geben Sie die Anfangsbuchstaben der gewünschten Datei ein, wird die Liste automatisch gefiltert und zeigt nur die in Frage kommenden Kandidaten an. Dieser Vorgang funktioniert nicht nur für Dateien, sondern für alle Arten von Listen.

Am einfachsten installieren Sie das Paket mit use-package.

(use-package vertico
:init
(vertico-mode))

Installieren Sie zusätzlich das Paket orderless wie folgt,

;; Orderless
(use-package orderless
  :init
  (setq completion-styles '(orderless basic)))

filtert Vertico die Kandidaten der Liste nach einem anderen Prinzip. Jetzt werden nur Dateien angezeigt, deren Namen genau die eingegebenen Buchstaben oder Buchstabenfolgen enthalten und zwar in beliebiger Reihenfolge. Lohnt sich auszuprobieren, es vereinfacht Vieles.

vertico vereinfacht die Suche

Das folgende Paket speichert die zuletzt erzielten Suchergebnisse auch über einen Neustart des Programms hinaus:

;; Die History speichern, Vertico sortiert
;; die Liste nach der Historyposition.
;; Überlebt auch einen Neustart
(use-package savehist
  :init
  (savehist-mode))

An vertico gefällt mir sehr, dass der Entwickler auf die emacseigenen Komplettierungsfunktionen zurückgreift und nicht das Rad neu erfindet.

Zusammenfassung:

Die hier vorgestellten Erweiterungen können die Arbeit schon sehr beflügeln. Doch im nächsten Artikel geht es weiter mit dem wichtigen Thema Suchen und darum, wie Sie mit selbst festgelegten Tastenkombinationen die vielen Befehle des Emacs besser in den Griff bekommen.

Quellen

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

Org mode:

deutsch:

https://www.youtube.com/watch?v=fiAj2Z2BmDc YouTube-Video

https://www.admin-magazin.de/content/download/2983/29666/filem-Emacs-Org-Mode.pdf Pdf

englisch:

https://orgmode.org/worg/org-tutorials/org4beginners.html

https://orgmode.org/worg/org-tutorials/orgtutorial_dto.html v. David O’Toole

https://orgmode.org/orgguide.pdf Pdf

Writeroom-mode:

https://github.com/joostkremers/writeroom-mode

Treemacs:

https://github.com/Alexander-Miller/treemacs

Perspective:

https://github.com/nex3/perspective-el

Org-roam:

https://www.orgroam.com/

Vertico:

https://github.com/minad/vertico