Go to english version.
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.
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).
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.
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.
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.
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!
M-x hexl-mode
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
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.
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
myGenTAGS.cmd
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).
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.
Dired-Mode einschalten mittels
C-x d directory <RET>
oder
M-x dired
i
zeigt ein Listing des Unterverzeichnisses wo der Cursor steht
und springt dorthin
C-u C-SPC
holt den Cursor zurück
Menu Regexp, Mark...
kann man Dateien per RegEx markieren,
z.B. markiert \.vmc$
Dateien mit Endung "vmc"
Menu Operate, Search Files...
(dired-do-search) ermöglicht, nach
Inhalt zu suchen.! find "redetho" *
Effizient, wenn die Dateien in einem Verzeichnis oder einem Verzeichnisbaum sind:
M-x dired
\.ext$
alle Dateien
markieren, die auf ".ext" enden
Operate..." > Query Replace in files
machen
^
geht eine Dir-Ebene höher,
a
geht eine Dir-Ebene tiefer, ohne einen neuen Buffer aufzumachen
(anders als f
oder RET)
R
verschiebt markierte Dateien in Verzeichnis
Customize dired-listing-switches "-Al")
-A
lässt .
und ..
weg
-l
muss immer dabei sein
Dired nutzt eine Lisp-Emulation von ls. Meine Präferenzen:
ls-lisp-dirs-first t
ls-lisp-format-time-list (quote ("%Y-%m-%d %H:%M:%S" "%Y-%m-%d %H:%M:%S")))
ls-lisp-use-localized-time-format t
Die folgenden Beispiele sind Source-Code-Änderungen. Sie gelten auch
für M-x tags-query-replace
, um Strings in mehreren Dateien zu ersetzen.
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
Von
aOutVol
nach
MA_A_OutVol
Q:
\(\s-\)a\([A-Z][a-zA-Z0-9]+\)
R:
\1MA_A_\2
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"
Q:
abc[ ]efg
; einmal oder zweimal oder dreimal, je nach Hierarchy-Stufe
M-j
neue Zeile im Kommentar:
M-;
Kommentar einfügen oder ausrichten
M-x set-buffer-file-coding-system
dann: unix
oder dos
oder mac
Angeblich geht auch C-x RET f
C-x SPC dann mit Cursor-Tasten aufziehen, dann C-c
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
)
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
Dazu nutzt man
M-x auto-revert-mode
Siehe http://www.gnu.org/software/emacs/manual/html_mono/efaq-w32.html
Sprache ändern mit
M-x ispell-change-dictionary
(M-x isp-c-d
geht auch), dann z.B. "deutsch"
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.
Mit RegExp suchen nach
[[:nonascii:]]
Das setzt den Cursor hinter das gefundene Zeichen.
init.el
nochmal ladenM-: (load user-init-file)
M-x eval-buffer
Entweder im *scratch*
-Buffer
(require 'xyz)
eingeben, oder
M-x lisp-interaction-mode
"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