redetho logo

Go to english version.

Mein EMACS How-To

EMACS Logo

Ich habe EMACS gelegentlich schon seit Version 20.7 benutzt. Seit 2016-11 nutze ich EMACS 25.1 regelmäßig. Dieses Verzeichnis enthält Dokumente, in denen ich mitteile

Die EMACS-Dokumentation, sowohl die eingebaute als auch online, ist sehr umfassend und detailliert. Ich habe einige Dinge aufgeschrieben, während ich gelernt habe. Dies teile ich unten mit. Die Aufzeichnungen könnten für Andere nützlich sein, die ähnliche Anforderungen haben wie ich.

Ansicht

EMACS "Frames" nutzen statt EMACS "Windows"

Ich erkenne an, dass EMACS den klassischen Betrieb im Terminal sehr gut unterstützt, indem er "Windows" anbietet. Ich nütze EMACS aber vom MS Windows-Desktop aus und ich bin gewöhnt, mit den eingebauten "Windows" zu arbeiten. Diese heißen in EMACS ‑ verwirrenderweise ‑ "Frames".

Ich habe EMACS so angepasst (Download meiner init.el), dass er standardmäßig "Frames" verwendet (zum Beispiel wenn er ein *help* -Fenster öffnet).

Zoom

C-x C-+ Font größer, danach C-+ zum Wiederholen. Wirkt nur auf akt. Buffer

C-x C-- Font kleiner, ditto

C-x C-0 auf Standard-Fontgröße zurückstellen.

Navigation

C-x r SPC r speichert die Cursor-Position in "Register" r (ein Buchstabe)

C-x r j r springt zurück

Register sind flüchtig. "Bookmarks" werden gespeichert.

Text-Ausrichtung

Ein EMACS-Absatz (Paragraph) wird durch einen leere Zeile abgeschlossen.

M-q "fill" bricht jede Zeile eines Absatzes (Paragraph) so um, dass sie nicht zu lang ist. Wo rechts umgebrochen wird, bestimmt die Variable fill-column, die standardmäßig auf 70 Buchstaben steht (genauer: der rechte Rand ist 70).

Die Variable comment-auto-fill-only-comments auf non-nil zu setzen, hatte leider nicht den Effekt, dass ;;; als Assembler-Kommentare dann automatisch umgebrochen werden.

Modes, die ich oft verwende

Anzeigen, wo ein Such-String in einem EMACS-Buffer vorkommt

M-x occur

zeigt alle Stellen, in einem eigenen Fenster, an denen der Suchstring vorkommt. Im Fenster sind Verweise, die man anklicken kann, um an die Stelle zu springen. Allerdings geht M-x occur nur über einen Buffer.

Achtung: M-x occur-mode macht irgendwas, was ich noch nicht verstehe!

Eine Datei hexadezimal anzeigen und binär editieren

M-x hexl-mode

EMACS serielles Terminal

Ich brauche oft ein serielles Terminal, um mich zu Debug-Zwecken per RS232-Schnittstelle an einen Mikrocontroller anzuschließen. Da ich Windows verwende, gibt es keine mitgelieferte Anwendung, seit Hyperterm nicht mehr dabei ist. Passenderweise ist Terminal-Software in EMACS eingebaut und kann eingeschaltet werden mit:

M-x serial-terminal

Siehe http://www.gnu.org/software/emacs/manual/html_node/emacs/Serial-Terminal.html

In mehreren Dateien Suchen und Ersetzen

Mittels "TAGS"

TAGS verwenden

Wenn man in einer offenen Datei (die stellt das aktuelle Verzeichnis ein!)

M-x tags-search

macht, will EMACS auch eine TAGS-Datei einlesen. Wenn die TAGS-Datei nicht im selben Verzeichnis ist, wie die Datei, kann man einen relativen oder absoluten Pfad eingeben, z.B. ../TAGS

M-,

sucht nach dem nächsten Vorkommen des Strings.

Analog:

M-x tags-query-replace

sucht und ersetzt.

Um eine andere TAGS-Datei zu verwenden, gibt es

M-x visit-tags-table

Das Verzeichnis kann man in Menu, Files, Open Directory... einstellen. Der Pfadtrenner ist aber / , auch unter Windows.

Wie man eine TAGS-Datei erzeugt

Um das EMACS-"TAGS"-Feature zu nutzen, muss EMACS eine Datei TAGS zugreifen können. So kann man sie erzeugen:

src\DisplayC-1.asm
..\Common\portab.inc
..\Common\trUtil.inc
..\Common\trStdlib.inc
..\Common\trFIFO.inc

Das Script besteht aus zwei Zeilen:

TYPE flist.txt | C:\Users\xyz\OneDrive\myPrograms\emacs-25.1\bin\etags.exe -
PAUSE

Das erzeugt die Datei "TAGS" im gleichen Directory. Ersetzen Sie den Pfad oben mit dem Pfad, wo Sie EMACS installiert haben. (siehe auch Vorgehen unter Windows).

Groß-/Klein-Schreibung bei der Suche unterscheiden

In der Standardeinstellung behandelt Regexp groß und klein gleich! Das steuert die Variable tags-case-fold-search

Siehe auch https://www.gnu.org/software/emacs/manual/html_node/emacs/Tags-Search.html

In älteren EMACS-Versionen, z.B. 20.7, gibt es tags-case-fold-search nicht, nur case-fold-search. Aber das hat ‑ scheint es ‑ den gleichen Effekt.

Mit dem Dired-Mode in Dateien suchen

Dired-Mode einschalten mittels

C-x d directory <RET>

oder

M-x dired

Effizient, wenn die Dateien in einem Verzeichnis oder einem Verzeichnisbaum sind:

Meine Dired Anpassungen

Customize dired-listing-switches "-Al")

Dired nutzt eine Lisp-Emulation von ls. Meine Präferenzen:

Suchen und Ersetzen mit Regular Expressions

Die folgenden Beispiele sind Source-Code-Änderungen. Sie gelten auch für M-x tags-query-replace, um Strings in mehreren Dateien zu ersetzen.

Beispiel 1 - Umordnen von Bestandteilen

Um

xyz_Q_OFFS oder xyz_D_OFFS

in

Q_xyz_OFFS oder D_xyz_OFFS zu ändern:

Query regexp:

\([A-Z0-9]+\)_\([DQ]\)_OFFS

Replace regexp:

\2_\1_OFFS

Beispiel 2 - Teil-Ersetzung

Von

aOutVol

nach

MA_A_OutVol

Q:

\(\s-\)a\([A-Z][a-zA-Z0-9]+\)

R:

\1MA_A_\2

Beispiel 3 - Groß/Kleinschreibung ändern

Von z.B.

EB_VolAttOsc1_OFFS

nach

EB_VOLATTOSC1_OFFS

d.h. nach Großschreibung

Q:

\(EB_\)\([A-Z][a-zA-Z0-9]+\)\(_OFFS\)

R:

\1\,(upcase \2)\3

Ähnlich: "downcase"

Beispiel 4 - String mit eingeschlossenen Blanks

Q: abc[ ]efg

ASM-Mode mit meinen AVR-Änderungen

Kommentare

; einmal oder zweimal oder dreimal, je nach Hierarchy-Stufe

M-j neue Zeile im Kommentar:

M-; Kommentar einfügen oder ausrichten

Verschiedenes

Zeilenende bestimmen

M-x set-buffer-file-coding-system

dann: unix oder dos oder mac

Angeblich geht auch C-x RET f

Rechteck kopieren

C-x SPC dann mit Cursor-Tasten aufziehen, dann C-c

Beautify

Die Datei öffnen und dann ganzen Abschnitt einrücken:

M-x find-file /path/to/file RET

C-x h (M-x mark-whole-buffer)

C-M-\ (M-x indent-region)

Versions-Verwaltung (VC)

VC ist automatisch eingeschaltet, wenn man eine Datei öffnet, deren Versionen von einem System verwaltet werden. Um VC ganz auszuschalten, kann man die EMACS-Variable vc-handled-backends auf nil setzen. (siehe Customizing VC).

Aus https://www.gnu.org/software/emacs/manual/html_mono/emacs.html

Datei-Änderungen überwachen, die außerhalb von EMACS geschehen

Dazu nutzt man

M-x auto-revert-mode

Siehe http://www.gnu.org/software/emacs/manual/html_mono/efaq-w32.html

Rechtschreib-Prüfung

Sprache ändern mit M-x ispell-change-dictionary (M-x isp-c-d geht auch), dann z.B. "deutsch"

Datei-Kodierung richtigstellen

Falls die EMACS-Heuristik versagt, die die Datei-Kodierung erraten will:

C-x RET r oder M-x revert-buffer-with-coding-system.

Siehe (info "(emacs) Specify Coding") für Details.

Nicht ASCII-Zeichen finden

Mit RegExp suchen nach

[[:nonascii:]]

Das setzt den Cursor hinter das gefundene Zeichen.

init.el nochmal laden

M-: (load user-init-file)

EMACS Lisp-Code nochmal laden

EMACS-Lisp "nachladen"

Entweder im *scratch*-Buffer (require 'xyz) eingeben, oder M-x lisp-interaction-mode

Siehe auch

"Hack EMACS" Rick Dillon on Youtube

"Publishing a book using org-mode" from Lakshmi Narasimhan https://medium.com/@lakshminp/publishing-a-book-using-org-mode-9e817a56d144

Emacs org-mode examples and cookbook http://ehneilsen.net/notebook/orgExamples/org-examples.html


Last change: 2021-11-22
© 2002-2021 Dr. Thomas Redelberger redethogmx.de