1 Punkte von GN⁺ 4 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Die Standardfunktionen von Emacs umfassen viele Werkzeuge, die ohne zusätzliche Pakete nutzbar sind, aber kaum auffallen; selbst in modernem Emacs 28.1+ lassen sich weiterhin praktische Funktionen entdecken, die man in fünf Minuten lernen kann
  • Alltägliche Aufgaben wie Dateien öffnen, URLs sammeln, vergleichen und Änderungen nachverfolgen lassen sich zu großen Teilen allein mit find-file, dired, ffap-menu, compare-windows und highlight-changes-mode erledigen
  • Backup-Dateien und Versionsverwaltungsdateien lassen sich durch das Erweitern der vc-diff-Befehlsfamilie in ein einziges Arbeitsmodell „mit vorheriger Version vergleichen“ zusammenführen
  • Bearbeitungs-, Navigations- und Anzeigeaufgaben lassen sich mit bereits enthaltenen Funktionen wie der apropos-Familie, find-function-on-key, kmacro-edit-lossage, subword-mode und der Keymap zur Bildbearbeitung schnell verbessern
  • Die zentrale Erkenntnis ist, dass selbst wenn das lisp-Verzeichnis von Emacs nicht groß ist, mit den standardmäßig eingebauten Funktionen weiterhin Spielraum besteht, den eigenen Arbeitsablauf zu erweitern

Überblick und Umfang

  • Bei Emacs-Funktionen gibt es ein Problem der Auffindbarkeit, und dieser Artikel ist ein Versuch, dieses Problem zu verringern, indem er nützliche, aber wenig bekannte eingebaute Funktionen einzeln vorstellt
  • Dies ist der dritte Artikel über nützliche, aber weniger bekannte Funktionen, die standardmäßig in Emacs enthalten sind
  • „Weniger bekannt“ ist eine subjektive Einschätzung und meint grob Funktionen, die in den letzten 20 Jahren in Online-Diskussionen über Emacs weniger als fünfmal erwähnt wurden oder die der Autor überhaupt nicht gesehen hat
  • Neue Emacs-Nutzer sollten besser nicht hier beginnen; nützlicher wird diese Liste, nachdem man sich mit den Grundkonzepten und weithin empfohlenen Paketen vertraut gemacht hat
  • Die Kriterien sind: nur pures Emacs ohne Pakete, keine steile Lernkurve, Ausschluss von Spielereien und häufig erwähnten Funktionen, und als Voraussetzung modernes Emacs 28.1+

Wörterbuch per Mouseover: M-x dictionary-tooltip-mode

  • Wenn dictionary-tooltip-mode aktiviert ist, kann man die Bedeutung eines Worts als Tooltip sehen, wenn man mit der Maus darüberfährt
  • Auch tooltip-mode muss aktiviert sein, ist aber standardmäßig eingeschaltet
  • Wenn ein lokales Wörterbuch eingerichtet ist, wird es zuerst verwendet; das Emacs-Wörterbuch kann über Wiktionary meist auch moderne Begriffe und Slang finden

Wildcards in find-file und dired

  • Auch bei der interaktiven Nutzung von find-file und dired lassen sich Wildcards verwenden
  • Verwendet man in find-file ein Muster wie *foo*.txt, können mehrere Dateien auf einmal geöffnet werden
  • Gibt man beim Öffnen eines Verzeichnisses in Dired einen Dateinamen-Wildcard an, lässt sich eine benutzerdefinierte Liste nur mit bestimmten Dateien erstellen
  • Der Beispielablauf sucht mit dem Muster */*_region_* nach temporären AucTeX-Dateien in Unterverzeichnissen, wählt sie in Dired aus und löscht sie und öffnet danach erneut per Wildcard mehrere TeX-Dateien in Unterverzeichnissen
  • In der Funktionssignatur ist diese Möglichkeit bei Programmaufrufen sichtbar, aber dass sie auch interaktiv nutzbar ist, erkennt man meist erst, wenn man die vollständige Docstring liest
  • Die Wildcard-Funktion von Dired mag gegenüber modernen Dired-Abläufen mit consult-find und embark-export zurückstehen, funktioniert aber sofort im Auslieferungszustand

URI-Liste im Buffer: M-x ffap-menu

  • ffap ist die find-file-at-point-Funktion, die prüft, ob die Cursorposition auf einen gültigen Dateipfad oder eine URL zeigt, und diese dann öffnen kann
  • ffap-menu durchsucht den gesamten Buffer und erstellt eine Liste von Einträgen, die wie Dateipfade oder URLs aussehen
  • Da es die completing-read-Schnittstelle nutzt, kann man die gefilterte Kandidatenliste in einen Buffer exportieren oder einige bzw. alle Einträge kopieren, öffnen oder mit Embark verarbeiten
  • Links mit Eigenschaften auflisten

    • Emacs-Anwendungen wie EWW fügen URLs teils nicht als Klartext-Links, sondern als Texteigenschaften ein, und ffap-menu übersieht diese
    • Um das auszugleichen, kann man mit einem von ffap-menu inspirierten benutzerdefinierten Befehl auch die Texteigenschaft shr-url einsammeln
    • Der Beispielbefehl my/search-occur-browse-url ist so aufgebaut, dass er sowohl normale URL-RegExps als auch die Eigenschaft shr-url findet, daraus Vervollständigungskandidaten bildet und die gewählte URL mit browse-url oder browse-url-generic öffnet

Fenster vergleichen: M-x compare-windows

  • Emacs hat viele Vergleichsbefehle wie diff, diff-buffers, diff-backup, dired-diff, vc-diff und verschiedene ediff-*-Befehle
  • compare-windows vergleicht Text ab den Cursorpositionen zweier Fenster, hält an der nächsten Abweichung an und meldet diese
  • Verglichen werden das aktive Fenster und das Fenster, das other-window auswählen würde; gegenüber Ediff oder diff ist es funktionsärmer, aber leichter und schneller auszuführen
  • Unabhängig von Buffer-Typ, Änderungsstatus, Datei oder Versionsverwaltungsstatus wird nur der tatsächlich in den beiden Fenstern sichtbare Text verglichen
  • Zeigt man in zwei Fenstern verschiedene Teile desselben Buffers an, lassen sich auch zwei Textausschnitte innerhalb desselben Buffers vergleichen
  • Auch Verzeichnislisten lassen sich vergleichen; im Beispiel wird die Dateiänderungszeit als erste Abweichung erkannt
  • Mit einem Präfixargument lassen sich Unterschiede in Leerraum ignorieren

Verzeichnisse mit Dired vergleichen: M-x dired-compare-directories

  • dired-compare-directories fragt in Dired nach dem zu vergleichenden Verzeichnis und markiert in beiden Dired-Listen Dateien mit unterschiedlichen Namen
  • Dieser Ansatz deckt die häufigsten Anwendungsfälle für Verzeichnisvergleiche ab
  • Da auf Dateiebene verglichen wird, lassen sich benutzerdefinierte Abgleichsbedingungen einschließlich Dateiattributen wie Änderungszeit oder Größe angeben
  • Die Bedingung (> mtime2 mtime1) kann Dateien markieren, die neuer geändert wurden
  • Die Bedingung (/= size1 size2) kann Dateien markieren, die denselben Namen, aber unterschiedliche Größen haben
  • Wenn ein interaktiverer Vergleich nötig ist, kann auch ediff-directories verwendet werden

Buffer-Änderungen hervorheben: M-x highlight-changes-mode

  • highlight-changes-mode hebt Stellen mit Dateiänderungen hervor und kann als „Live“-Alternative zu diff-Befehlen wie diff-buffer-with-file dienen
  • Das Standardverhalten hebt Änderungen vom Zeitpunkt des Aktivierens des Modus bis zu seinem Ausschalten hervor; es geht nicht automatisch nur um ungespeicherte Änderungen
  • Mit before-save-hook und after-save-hook lässt sich ein Ablauf bauen, bei dem die Hervorhebung vor dem Speichern ausgeschaltet und danach wieder eingeschaltet wird, sodass nur Änderungen vor dem Speichern hervorgehoben werden
  • Der Beispielcode aktiviert highlight-changes-mode in Datei-Buffern über text-mode-hook und steuert den Hervorhebungszustand mit Hooks vor und nach dem Speichern
  • In Form eines eigenständigen highlight-unsaved-mode würde daraus ein Minor Mode, der alle Änderungen bis zum Speichern hervorhebt
  • Mit highlight-changes-next-change und highlight-changes-previous-change kann man zur nächsten bzw. vorherigen Änderungsstelle springen
  • Mit highlight-changes-remove-highlight lässt sich die visuelle Hervorhebung entfernen und nur die auf Änderungsverfolgung basierende Navigation weiter nutzen

Backup-Dateien tatsächlich nützlich machen: die vc-diff-Familie

  • Das Problem mit Emacs-Backups

    • Emacs erstellt standardmäßig regelmäßig Backups von Dateien, die bearbeitet und gespeichert werden
    • Dieses Backup-System wird oft als lästige Funktion erwähnt, die man mit make-backup-files abschalten sollte
    • Bei sensiblen Dateien kann es Sicherheitsbedenken geben, wenn Kopien an anderer Stelle auf der Festplatte landen
    • Abgesehen davon besteht das Problem vor allem darin, dass Backups im Arbeitsverzeichnis verstreut werden und es an einer leicht nutzbaren UI zum Durchsehen oder Verwalten der Backup-Dateien fehlt
    • Mit Benutzeroptionen wie backup-directory-alist, kept-old-versions und kept-new-versions lassen sich Speicherort und Anzahl der Backups anpassen
    • Das externe Paket backup-walker bietet eine Oberfläche, mit der sich Backups wie eine Zeitreise durchsuchen lassen
  • Erweiterung der VC-Oberfläche

    • Das in Emacs eingebaute VC-Paket bietet eine Oberfläche, um ältere Versionen versionsverwalteter Dateien anzusehen
    • vc-diff vergleicht eine Datei per Diff mit der vorherigen oder einer angegebenen Version
    • vc-ediff startet Ediff mit der vorherigen oder einer angegebenen Version einer Datei
    • vc-revision-other-window zeigt die vorherige oder eine angegebene ältere Version neben der aktuellen Datei an
    • Diese Oberfläche ist nicht auf Git beschränkt, funktioniert aber nicht bei nicht versionsverwalteten Dateien
    • Wenn man die drei VC-Befehle überlädt, lassen sich ungespeicherte Buffer, versionsverwaltete Dateien und Backups nicht versionsverwalteter Dateien in einem Modell „mit vorheriger Version vergleichen“ zusammenführen
    • Bei ungespeicherten Dateien vergleichen vc-diff und vc-ediff den Buffer mit der Datei
    • Bei versionsverwalteten Dateien laufen die ursprünglichen vc-diff, vc-ediff und vc-revision-other-window unverändert weiter
    • Bei nicht versionsverwalteten Dateien wird mit dem zuletzt nummerierten Backup oder mit einem per Präfixargument gewählten nummerierten Backup verglichen bzw. dieses angezeigt

Die apropos-Familie

  • describe-key, also C-h k, ist eine äußerst nützliche Hilfetaste, weil man direkt nachsehen kann, welche Funktion ein Tastendruck aufruft
  • Als zweite Hilfefunktion, die man lernen sollte, ist apropos besonders mächtig und ein Einstieg, um die Anordnung der Emacs-Funktionen zu verstehen, wenn man noch nicht weiß, wonach man suchen muss
  • apropos ist nicht nur ein einzelner Befehl, sondern eine Familie spezialisierter Suchbefehle wie apropos-library, apropos-function, apropos-command, apropos-variable, apropos-user-option, apropos-documentation und info-apropos
  • Die Beispielkonfiguration ersetzt apropos, indem sie diese Befehle unter einer Keymap auf C-h a legt
  • Auch ohne einen Prompter wie which-key kann man nach dem Präfixtastendruck C-h a mit C-h die Liste der verfügbaren Befehle anzeigen
  • customize-apropos sammelt passende Optionen, Faces und Gruppen zu einem Suchbegriff und erstellt daraus einen angepassten Customize-Buffer

find-func-Werkzeuge: M-x find-function-on-key, M-x find-function

  • Wenn einem ein Keybinding nicht gefällt oder man sein Verhalten verstehen möchte, kann man zur Definition des von dieser Taste aufgerufenen Befehls springen, um den Code zu lesen oder zu ändern
  • Der übliche Ablauf ist, mit describe-key oder C-h k zuerst den von der Taste aufgerufenen Befehl zu prüfen und dann mit s zum Quelltext zu springen
  • find-function-on-key verkürzt diesen zweiten Schritt und springt direkt vom Keybinding zum Quelltext der Funktion
  • Die Beispielkonfiguration bindet in help-map C-h M-k an find-function-on-key

copy-from-above-command und duplicate-dwim

  • In Emacs wurden zuletzt mehrere Befehle zum Duplizieren von Text aufgenommen, die viele Nutzer schon seit Langem verwenden
  • copy-from-above-command kopiert Text aus der ersten nicht leeren Zeile über der aktuellen Zeile und ähnelt Vims C-y
  • duplicate-dwim kopiert die aktuelle Zeile oder den aktiven Bereich unter die aktuelle Zeile und ähnelt Vims yy<N>p
  • copy-from-above-command kopiert entsprechend dem Präfixargument Zeichen aus der oberen Zeile, aber das Beispiel-Advice verändert ein C-u-Präfixargument zu „gesamte obere Zeile kopieren und auskommentieren“
  • Mit einem numerischen Präfixargument C-<N> kann man wie bisher eine festgelegte Anzahl Zeichen von oben kopieren
  • Bei duplicate-dwim muss entschieden werden, ob der Cursor nach dem Duplizieren auf dem Original oder auf der Kopie stehen soll; das lässt sich über Benutzeroptionen festlegen
  • Die Beispielkonfiguration setzt duplicate-region-final-position und duplicate-line-final-position auf -1, sodass Cursor und Bereich zum duplizierten Text verschoben werden

Tastenanschläge in ein Makro verwandeln: M-x kmacro-edit-lossage

  • Emacs-Tastaturmakros können nicht nur Texttransformationen, sondern jede Aktionssequenz in Emacs inklusive Mausklicks aufzeichnen und wiedergeben
  • Tastaturmakros sind mächtig, erzeugen aber kognitive Last, weil man vor dem Start der Aufzeichnung eine Wiederholungsmöglichkeit vorhersehen und eine fehlerfreie verallgemeinerte Aktion ausführen muss
  • Vims .-Befehl und das Emacs-Paket dot-mode entschärfen das Problem wiederholter Bearbeitung, haben aber einen anderen Umfang als vollständige Tastaturmakros
  • view-lossage (C-h l) zeigt die letzten ungefähr 300 Tastenanschläge an
  • kmacro-edit-lossage ermöglicht es, jederzeit aus diesem Tastenprotokoll ein Makro zu machen
  • Lossage ist tatsächlich editierbar, sodass man beim Erstellen eines Makros neue Befehle in das Protokoll einfügen kann
  • Bereits definierte Makros lassen sich häufiger mit edit-kbd-macro (C-x C-k e) bearbeiten, aber kmacro-edit-lossage ist nützlich, um in seltenen Situationen eine gerade ausgeführte komplexe Aufgabe wiederholbar zu machen
  • Um ein verallgemeinerbares Makro zu erstellen, muss man oft einen Aufruf von kbd-macro-query in die Lossage einfügen

subword-mode, superword-mode und Wortgrammatik

  • Die wortbasierten Bewegungs- und Bearbeitungsbefehle von Emacs verwenden je Major Mode eine Syntaxtabelle, und was als Wort gilt, kann vom Benutzer angepasst werden
  • Im subword-mode wird jede Komponente eines CamelCase-Symbols als eigenes Wort behandelt
  • Beispielsweise wird GtkWindow in Gtk und Window, EmacsFrameClass in Emacs, Frame, Class sowie NSGraphicsContext in NS, Graphics, Context aufgeteilt
  • Im superword-mode werden snake_case-Symbole wie this_is_a_symbol als ein einziges Wort behandelt
  • In der Praxis ist superword-mode weniger nützlich als subword-mode, weil sich die Bearbeitung von Symbolen bereits gut mit *-sexp-Befehlen abdecken lässt
  • Schon ein paar Minuten Arbeit an der Syntaxtabelle eines Major Mode können Reibung bei struktureller Navigation verringern
  • Im Lisp-Umfeld kann man : als wortbildendes Zeichen definieren, damit sich Keywords wie :foo leichter mit backward-kill-word verarbeiten lassen
  • Im Org mode kann man die Trennzeichen = und ~ so behandeln, als gehörten sie zur Wortbildung
  • Wie Zeichensyntax angegeben wird, lässt sich mit describe-syntax (C-h s) und modify-syntax-entry nachsehen

Bildanzeige steuern

  • Fast überall in Emacs, wo Bilder angezeigt werden, kann man den Cursor auf ein Bild setzen und mit i die Darstellung steuern
  • Dieselben Steuerungen funktionieren auch bei der Vorschau von Bildlinks im Org mode und bei Bildern in Elfeed-Eintragsbuffern
  • i + und i - sind nützlich zum Vergrößern und Verkleinern, i r dreht das Bild um 90 Grad
  • Mit i c kann man das Bild auch zuschneiden; die vollständigen Tasten findet man unter M-x describe-keymap RET image-map
  • Auch das aus Browsern und anderen Anwendungen vertraute Kürzel C-<wheel> kann verwendet werden
  • Mit repeat-mode lassen sich nach dem ersten Aufruf +, - und r ohne das Präfix i wiederholen
  • Diese Funktion wird über eine auf dem Bild liegende Keymap bereitgestellt und muss nicht extra aktiviert werden
  • Verändert wird nicht die Bilddatei auf der Festplatte, sondern nur der Anzeigestatus
  • Auf Webseiten und in gerenderten HTML-Buffern zerlegt z (shr-zoom-image) Bilder in mehrere horizontale Streifen und wechselt zyklisch die Größe, um Beschränkungen bei der Anzeige großer Bilder zu entschärfen

Gesamten Text anzeigen: M-x visible-mode

  • Emacs kann Buffer-Text selektiv unsichtbar machen; darauf basieren Faltfunktionen wie in Magit sections, Outline mode und Org mode
  • Modi mit Faltfunktionen bieten normalerweise Keybindings zum Umschalten des Faltzustands, und TAB funktioniert meist
  • Wenn es schwer ist, sich modusspezifische Keybindings zu merken, oder man sie nicht oft genug benutzt, kann man mit visible-mode allen versteckten Text anzeigen
  • visible-mode deaktiviert die Unsichtbarkeit von Text für den gesamten Buffer und stellt beim erneuten Ausführen den vorherigen Unsichtbarkeitszustand wieder her
  • In Buffern mit dynamischer Falt-UI kann die Anzeige während aktiviertem visible-mode kaputt oder unordentlich wirken
  • Die Funktion ist eher eine temporäre Maßnahme oder ein Debugging-Werkzeug, kann aber mit einem Befehl sämtlichen Text im Buffer einheitlich sichtbar machen

Unsichtbaren Text ignorieren: isearch-toggle-invisible

  • Einige Emacs-Befehle wie Isearch ignorieren standardmäßig die Text-Unsichtbarkeit, damit sich das tatsächliche gesamte Dokument leicht durchsuchen lässt
  • Wenn der sichtbare Buffer-Zustand als Navigationshilfe dient, kann eine Suche, die gefalteten Text automatisch aufdeckt, anders als erwartet funktionieren
  • Wenn man Isearch eher als Navigationswerkzeug denn als Suche verwendet, wird es problematisch, zu Treffern in gefalteten Bereichen zu springen
  • Während Isearch kann man mit isearch-toggle-invisible, gebunden an M-s i, umschalten, ob unsichtbarer Text durchsucht wird
  • Im Beispiel wurde nach zero gesucht, um zur letzten Überschrift in einem Org-Dokument zu springen, dabei aber zu einem Treffer in einem gefalteten Bereich gesprungen; bei der erneuten Suche wurde M-s i gedrückt, um nur noch zu Treffern im sichtbaren Text zu springen
  • Die Umschalttasten für das Isearch-Verhalten liegen unter dem M-s-Keymap, passend zum Standard-Binding C-s

Lineal: M-x ruler-mode

  • In Emacs sind als Relikte früherer WYSIWYG-Textverarbeitungsfunktionen noch Features wie die Befehle center-* erhalten
  • Die Befehle center-* zentrieren Zeilen, Absätze oder Regionen anhand von fill-column und können etwa für dekorative Kommentare in Code verwendet werden
  • Die Breite von display margin und fringe ist Bildschirmfläche, in der sich viele Funktionen unterbringen lassen, aber die display margin direkt zu ändern ist nicht einfach
  • set-left-margin und set-right-margin ändern nicht die Breite der display margin, sondern verhalten sich ähnlich wie die center-Befehle und rücken den eigentlichen Buffer-Text ein
  • Für die Konfiguration der display margin gibt es keinen direkten Befehl, und Änderungen werden erst wirksam, wenn das Fenster erneut dargestellt wird
  • Wenn man ruler-mode aktiviert, kann man die Bedienung über Tooltips in der header-line sehen
  • Mit S-<mouse-1> und S-<mouse-3> lassen sich die linken und rechten margins des Buffers setzen
  • Mit Drag auf <mouse-2> lässt sich auch fill-column setzen
  • Wenn man margins spontan statt über Preset-Breiten umschalten möchte, kann ruler-mode benutzerfreundlicher sein als Pakete wie visual-fill-column oder olivetti

Text erneut umbrechen: M-x refill-mode

  • Emacs bietet mehrere fill-*-Befehle zum Umbrechen von Text sowie auto-fill-mode, das Zeilenumbrüche während der Eingabe behandelt
  • auto-fill-mode wird schon früh im Emacs-Tutorial behandelt, was zeigt, dass Textumbruch als wichtige Bearbeitungsfunktion gilt
  • auto-fill-mode ist in Wirklichkeit nicht vollständig automatisch: Es bricht nur die aktuelle Zeile um, und Verschiebungen in früheren Absätzen, etwa durch Einfügen, müssen manuell korrigiert werden
  • refill-mode ist die tatsächlich automatische Textumbruch-Funktion in Emacs, die ein Dokument an fill-column ausgerichtet hält
  • Mit M-x refill-mode kann man dieses Verhalten aktivieren

Alle Fenster gemeinsam scrollen: M-x scroll-all-mode

  • scroll-other-window erlaubt es, ein anderes, nicht ausgewähltes Fenster ohne Fokuswechsel zu scrollen, was nützlich ist, wenn man im aktuellen Fenster arbeitet und im nächsten Referenzmaterial betrachtet
  • follow-mode dient dazu, einen einzelnen Buffer fortlaufend über mehrere Fenster hinweg anzuzeigen
  • scroll-all-mode ist weniger bekannt, scrollt aber alle Fenster eines Frames gleichzeitig
  • Das ist nützlich, wenn man Buffer betrachten muss, die miteinander synchronisiert werden sollten; im Beispiel wird es genutzt, um zwei Dateiversionen visuell zu vergleichen, ohne eine Ediff-Sitzung zu starten
  • Der gezeigte Ablauf öffnet mit vc-revision-other-window ein bestimmtes älteres Backup der aktuellen Datei, aktiviert dann scroll-all-mode und scrollt anschließend wie gewohnt, wobei sich alle Fenster gleichzeitig bewegen
  • Scrollen in anderen Fenstern und master-mode

    • Wenn mehr als zwei Fenster auf dem Bildschirm sind und das zu scrollende Fenster nicht das von Emacs gewählte next-window ist, kann es Probleme geben
    • Das eingebaute master-mode erlaubt es, einen Buffer, der aus einem anderen Buffer heraus gescrollt werden kann, vorab oder spontan festzulegen
    • Ein direkterer Weg ist es, die Strategie zum Finden des zu scrollenden Fensters festzulegen
    • (setq other-window-scroll-default #'get-lru-window) sorgt dafür, dass immer das am längsten nicht benutzte Fenster gescrollt wird
    • Das ist nützlich, wenn man ein Fenster mit Referenzmaterial scrollen möchte, das man selbst kaum auswählt
    • Wenn sich unter mehreren Fenstern zwei häufig bearbeitete Fenster befinden, kann man per Lambda-Funktion festlegen, dass das zuletzt benutzte Fenster als anderes Fenster gescrollt wird
    • Solche Kombinationen aus Einstellungen helfen dabei, scroll-other-window das beabsichtigte Fenster scrollen zu lassen

Beenden verweigern: M-x emacs-lock-mode

  • Wenn ungespeicherte Dateien vorhanden sind, verweigert Emacs das Beenden, bis beantwortet ist, wie mit jeder Datei verfahren werden soll
  • emacs-lock-mode erweitert diese Idee und erlaubt es dem Benutzer, beliebige Buffer zu sperren
  • Bis die Sperre aufgehoben wird, verweigert der betreffende Buffer das Killen und gibt Meldungen wie Buffer "*scratch*" is locked and cannot be killed aus
  • Wenn gesperrte Buffer vorhanden sind, verweigert auch Emacs das Beenden und zeigt Meldungen wie Emacs cannot exit because buffer "*scratch*" is locked
  • Das ist nützlich, um Informationen in Buffern, die keine Datei besuchen, nicht versehentlich zu verlieren oder sich daran zu erinnern, dass in diesem Buffer noch Arbeit offen ist
  • Nach Org-capture ist der erste Fall selten geworden, aber um Ausgaben oder Zustände von Shell-, Compilation-Buffern, Websites oder anderen speziellen Anwendungen nicht zu verlieren, ist die Funktion weiterhin nützlich

Frame wiederherstellen: M-x undelete-frame-mode, M-x undelete-frame

  • Wenn man einen sorgfältig eingerichteten Emacs-Frame versehentlich schließt, kann man ihn mit undelete-frame wiederherstellen
  • Um diese Funktion zu nutzen, muss undelete-frame-mode aktiviert sein
  • Sie tut für Frames das, was die eingebauten Funktionen winner und tab-bar-history für Fenster bereitstellen
  • Wenn undelete-frame-mode zusammen mit Emacs dauerhaft aktiviert ist, muss man sich weniger Sorgen machen, Frames zu schließen
  • Es lassen sich bis zu 16 gelöschte Frames wiederherstellen

Verbleibende und ausgeschlossene Funktionen

  • Von den Funktionen, denen man in den letzten sechs Jahren begegnet ist, haben 20 den praktischen Emacs-Alltag des Jahres 2026 überlebt
  • Viele zufällig entdeckte Emacs-Bibliotheken waren eher von archäologischem Interesse als stabile Lösungen für Anforderungen normaler Benutzer
  • allout-mode ist ein Outline-Manager aus einer Parallelwelt, ähnlich dem Org mode, und bringt Funktionen wie Org-Speed-Keys und subtreeweise Verschlüsselung mit
  • shadowfile implementiert unison innerhalb von Emacs, aber sein Nutzen ist fraglich
  • double-mode ist eine auf Tastenumwandlung basierende Methode zur Eingabe nicht auf der Tastatur vorhandener Zeichen und älter als quail
  • Die Bibliothek bs war ein Versuch, einen intelligenteren list-buffers-Befehl zu schaffen, wurde aber durch das bessere ibuffer weitgehend überflüssig
  • Auch oberflächlich nützliche Funktionen wie das Umhüllen einer Region mit Trennzeichen per electric-pair-mode wurden ausgeschlossen, weil der Nutzen im Verhältnis zur Umständlichkeit gering ist
  • Für solche Zwecke sind externe Pakete wie wrap-region, smartparens und embrace besser geeignet
  • Eingebaute Org- und Org-nahe Bibliotheken wie appt sind interessant, aber groß genug für einen eigenen Artikel
  • Bibliotheken wie thunk, die vor allem für Elisp-Entwickler nützlich sind, brauchen ebenfalls eine eigene Zusammenstellung
  • Das mit Emacs mitgelieferte Verzeichnis lisp ist nicht besonders groß, aber es gibt weiterhin Raum, nützliche Standardfunktionen darin zu entdecken

1 Kommentare

 
GN⁺ 4 시간 전
Lobste.rs-Kommentare
  • Das Öffnen von mehreren Dateien per Wildcard wie *foo*.txt in find-file (C-x C-f) ist meistens ein Versehen, deshalb habe ich find-file-noselect per advice-add so angepasst, dass find-file bei Verwendung von Wildcards direkt dired öffnet
    Wenn file-expand-wildcards 2 oder mehr Ergebnisse liefert, wird an dired-noselect übergeben, andernfalls wird das ursprüngliche find-file-noselect aufgerufen

  • ruler-mode macht wirklich Spaß. Ich wusste überhaupt nicht, dass Emacs so eine WYSIWYG-Funktion hat, und Emacs ist wirklich eine seltsame, aber erfreuliche Software

  • Ich dachte, ich hätte mit normalem Emacs schon fast alles gesehen, aber es gibt noch viel mehr zu entdecken. ruler-mode ist ziemlich cool zum Schreiben

    • Es überrascht mich, dass solche Funktionen direkt in Emacs selbst enthalten sind. Man denkt leicht, Emacs stelle nur die elisp-API bereit, mit der man so etwas bauen kann, aber ich hatte viele Standardwerkzeuge übersehen
      Früher habe ich Magit viel häufiger benutzt, aber inzwischen bin ich auf das eingebaute vc-mode und die diff-Werkzeuge umgestiegen, und beides funktioniert sehr gut, womit ich sehr zufrieden bin
  • Solche Beiträge mag ich. Wenn man komplexe und anpassbare Editoren wie Emacs oder Neovim benutzt, installiert man oft zuerst eine aufgeblähte Distribution und legt zu schnell los, bevor man versteht, was der Standardeditor alles kann
    Wenn man Zeit hat, ist es ziemlich lohnend, das Handbuch zu lesen und die Konfiguration von Grund auf selbst aufzubauen. Eine wenig bekannte Emacs-Funktion ist finder-list-keywords; wenn man sie ausführt, erscheint ein Menü, mit dem sich schwer auffindbare Emacs-Funktionen erkunden lassen. Wusstest du zum Beispiel, dass es 24 eingebaute Spiele gibt?