(X)Emacs KurzreferenzAutor: Stefan Wehr
(http://www.informatik.uni-freiburg.de/~wehr/) | |||||
Änderungen:
| |||||
EinleitungDies ist eine Kurzreferenz. Vieles ist deshalb nur verkürzt und/oder unvollständig dargestellt. Ich habe Kommandos aufgelistet, die ich häufig verwende und für nützlich halte. Falls du ein Kommando für nützlich hälst, es aber nicht in dieser Liste findest, freue ich mich über eine Mail. Eine relativ vollständige Dokumentation der Features von Emacs findet man im Emacs Manual. Ich verwende die folgende Notation, um Tastaturkürzel darzustellen: Mit Großbuchstaben werden Tasten wie Strg oder Alt bezeichnet, Kleinbuchstaben bezeichnen die jeweiligen Tasten. Wenn Tasten gleichzeitig zu drücken sind, verwende ich ein Bindestrich (`-') als Trennzeichen, falls die Tasten nacheinander gedrückt werden sollen, werden sie durch ein Leerzeichen getrennt.Diese Abkürzungen stellen die Sondertasten auf der Tastatur dar:
| |||||
Dateien / Beenden / Undo | |||||
C-x C-f |
Öffnet eine Datei im aktuellen Rahmen als neuen Buffer. | ||||
C-x C-v |
Öffnet eine Datei im aktuellen Rahmen, ersetzt den bisherigen Buffer. | ||||
C-x C-s ! |
Speichert alle offenen Dateien mit Rückfrage bei jeder Datei. | ||||
C-x C-s |
Speichert die aktuelle Datei. | ||||
C-x C-w |
Speichert eine Datei unter einem anderen Name. | ||||
C-x i |
Fügt den Inhalt einer Datei ein. | ||||
C-x C-c |
Beendet Emacs. | ||||
C-x u |
Undo | ||||
Navigation | |||||
C-v |
Um ein Seite vorwärts scrollen. | ||||
M-v |
Um eine Seite rückwärts scrollen. | ||||
C-l |
Seite am Cursor zentrieren. | ||||
M-< |
Geht zum Anfang des Puffers. | ||||
M-> |
Geht zum Ende des Puffers. | ||||
C-f |
Bewegt den Cursor einen Buchstaben nach vorne. | ||||
M-f |
Bewegt den Cursor ein Wort nach vorne. | ||||
C-b |
Bewegt den Cursor einen Buchstaben zurück. | ||||
M-b |
Bewegt den Cursor ein Wort zurück. | ||||
C-n |
Geht in die nächste Zeile. | ||||
C-p |
Geht in die vorherige Zeile. | ||||
C-a |
Geht an den Anfang der aktuellen Zeile. | ||||
C-e |
Geht an das Ende der aktuellen Zeile. | ||||
M-m |
Geht an den sichtbaren Anfang der aktuellen Zeile. | ||||
Puffer, Windows und Frames | |||||
Emacs zeigt jede zu editierende Datei in einem sogenannten Puffer (`buffer') an. Jeder Puffer ist in einem Fenster (`window') enthalten und jedes Fenster in einem Rahmen (`frame'). Man darf sich nicht von der Bezeichnung `window' täuschen lassen; damit ist die Unterteilung eines Fenster auf dem Bildschirm (welche bei Emacs als `frames' bezeichnet werden) in Untereinheiten gemeint. | |||||
C-x 2 |
Unterteilt das aktuelle Fenster vertikal in 2 Abschnitte (2 neue Fenster). | ||||
C-x 3 |
Unterteilt das aktuelle Fenster horizontal in 2 Abschnitte (2 neue Fenster). | ||||
C-x 0 |
Verschmilzt das aktuelle Fenster mit dem Nachbarfenster, das Nachbarfenster nimmt danach den Platz beider Fenster ein. | ||||
C-x 1 |
Macht das aktuelle Fenster zum alleinigen Fenster des Rahmens. | ||||
C-x o |
Springt in das Nachbarfenster. | ||||
C-x 5 2 |
Erstellt einen neuen Rahmen. | ||||
Markierungen | |||||
C-SPC |
Setzt eine Markierung an der aktuellen Cursorposition. | ||||
C-x h |
Markiert den gesamten Puffer. | ||||
C-x C-x |
Tauscht die Markierung mit der Cursorposition. | ||||
C-< |
Setzt Marke an den Anfang des Puffers. | ||||
C-> |
Setzt Marke an das Ende des Puffers. | ||||
C-u C-SPC |
Springt zur letztgesetzten Marke. Wiederholtes Anwenden durchläuft die Liste der Markierungspositionen. | ||||
Löschen, Ausschneiden, Kopieren | |||||
Wenn man in Emacs einen Textteil löscht, ist dieser
unwiederbringlich verloren. Funktionen, die so etwas bewirken,
erkennt man am Präfix `delete' in ihrem Namen. Die meisten
Funktionen jedoch schneiden den Text nur aus; diese tragen das
Präfix `yank'. Im Gegensatz zu anderen Editoren überschreibt
eine Yank-Operation nicht den bereits gespeicherten
Textteil. Die Textabschnitte werden im sogenannten `kill-ring'
gespeichert. Dies ist eine Art Queue, die ihre Einträge nach der
LIFO Strategie verwaltet. Mit F1 v kill-ring RET kann man
sich den Inhalt der Variablen anzeigen lassen. | |||||
C-k |
Löscht das Zeichen rechts vom Cursor. | ||||
M-k |
Schneidet den Rest der Zeile rechts vom Cursor aus. | ||||
M-d |
Schneidet das Wort bzw. den Wortteil rechts vom Cursor aus. | ||||
DEL |
Löscht das Zeichen links vom Cursor. | ||||
M-DEL |
Schneidet das Wort links vom Cursor aus. | ||||
M-^ |
Verbindet die aktuelle Zeile mit deren Vorgängerzeile. | ||||
C-x C-o |
Löscht die der aktuellen Zeile nachfolgenden Leerzeilen. Falls die Zeile selbst auch leer ist, werden auch die vorhergenden Leerzeilen gelöscht. | ||||
C-k |
Löscht die aktuellen Zeile ohne das abschließende
newline-Zeichen. Falls aber der Cursor am sichtbaren Ende
steht, wird nur das newline-Zeichen gelöscht. Mit einem numerischen Argument versehen ( C-u DIGIT )
ändert sich die Funktionsweise etwas:
|
||||
C-w |
Markierung ausschneiden. | ||||
M-w |
Markierung kopieren. | ||||
Einfügen | |||||
Wenn es sich bei der Einfügeoperation um das Einfügen eines ausgeschnitten oder kopierten Textteils handelt, spricht man im Emacs-Jargon von `Yanking'. Die ensprechenden Funktionen heißen auch alle entsprechend und sind dadurch leicht zu erkennen. | |||||
RET |
Fügt eine neuen Zeile ein und springt in deren Anfang. | ||||
C-j |
Fügt eine neue Zeile ein und rückt sie den Regeln des Modus' gemäÂß ein. | ||||
C-o |
Fügt eine Leerzeile nach dem Cursor ein. | ||||
C-y |
Fügt den zuletzt ausgeschnittenen oder kopierten Text ein. | ||||
M-y |
Navigiert durch die Liste der zuletzt ausgeschnittenen oder kopierten Textteile. | ||||
M-x append-to-buffer |
Hängt den ausgewählten Text ans Ende eines Buffers. | ||||
M-x prepend-to-buffer |
Fügt den ausgwählten Text am Anfang eines Buffers ein. | ||||
rechteckiges Editieren | |||||
Um ein Rechteck als ein solches zu Markieren, wird der Text `ganz normal' markiert (siehe Abschnitt ). Das Rechteck wird jetzt durch die Marke und den Cursor begrenzt. | |||||
C-x r d |
Löscht das ausgewählte Rechteck. | ||||
C-x r k |
Schneidet das gerade ausgewählte Rechteck aus. | ||||
C-x r y |
Fügt das zuletzt ausgeschnittene Rechteck ein. Rechtecke werden nicht im `kill-ring' aufbewahrt. Man kann immer nur auf das zuletzt ausgeschnittene zugreifen. | ||||
C-x r t STRING RET |
Ersetzt jede Zeile des Rechtecks durch STRING. | ||||
Register | |||||
Ein Register kann die verschiedensten Informationen speichern. Jedes Registern wird über einen Buchstaben angesprochen. Das Neubelegen eines Registers löscht den bisherigen Inhalt (falls vorhanden). | |||||
C-x r SPC CHAR |
Speichert die aktuelle Cursorposition im Register CHAR. | ||||
C-x r j CHAR |
Springt zu der im Register CHAR gespeicherten Cursorposition. | ||||
C-x r s CHAR |
Speichert makierten Text im Register CHAR. | ||||
C-x r r CHAR |
Speichert die Auswahl als Rechteck im Register CHAR | ||||
C-x r i CHAR |
Fügt Text aus Register CHAR ein (auch Rechtecke). | ||||
Suchen | |||||
Emacs verwendet als Standardsuchmodus die sogenannte
`inkrementelle Suche'. Dabei wird bereits beim Tippen des
Suchbegriffs' nach möglichen Treffern gesucht und die
entsprechende Stelle markiert. Falls in einem Suchbegriff nur
Kleinbuchstaben verwendet werden, ignoriert Emacs die
Unterschiede, welche durch Groß- und Kleinschreibung
hervorgerufen werden. Diese Verhalten kann durch Setzen der
Variable case-fold-search auf nil
geändert werden.
| |||||
C-s |
Startet eine inkrementelle Suche beginnend bei der
aktuellen Curserposition in Richtung Dateiende
(Vorwärtsrichtung). Während diesem
Vorgang kann mit einem erneuten C-s zum nächsten
Treffer gesprungen werden, bzw. mit C-r die
Suchrichtung geändert werden. Mit M-p und
M-n kann man im `search-ring' navigieren und
dadurch frühere Suchvorgänge reaktivieren. Mit
M-y kann auf den Inhalt des `kill-ring'
zugegriffen werden.
|
||||
C-r |
Startet eine inkrementelle Suche beginnend bei der aktuellen Curserposition in Richtung Dateianfang (Rückwärtsrichtung) . Man kann dabei dieselben Kommandos anwenden wie bei der inkrementellen Suche in Vorwärtsrichtung. | ||||
C-s C-s |
Sucht nach dem zuletzt verwendeten Begriff in Vorwärtsrichtung. | ||||
C-r C-r |
Sucht nach dem zuletzt verwendeten Begriff in Rückwärtsrichtung. | ||||
C-s RET |
Startet eine nicht-inkrementelle Suche in Vorwärtsrichtung. | ||||
C-r RET |
Startet eine nicht-inkrementelle Suche in Rückwärtsrichtung. | ||||
C-M-s |
Startet eine inkrementelle Suche in Vorwärtsrichtung, wobei
der Suchbegriff als regulärer Ausdruck interpretiert
wird. Die Befehle innerhalb dieses Suchmodus' sind analog zu
denen im `normalen' Suchmodus.
Informationen zur Syntax der von Emacs verwendeten
regulären Ausdruck findet man
hier.
Jedes getippte Leerzeichen wird von Emacs automatisch in die
Zeichenklasse für Whitespace verwandelt (\s-+ ),
ein explizites Leerzeichen kann mit C-q SPC
angegeben werden.
|
||||
C-M-r |
Startet eine inkrementelle Suche in Vorwärtsrichtung, wobei der Suchbegriff als regulärer Ausdruck interpretiert wird. | ||||
C-M-s C-M-s |
Sucht nach dem zuletzt verwendeten regulären Ausdruck in Vorwärtsrichtung. | ||||
C-M-r C-M-r |
Sucht nach dem zuletzt verwendeten regulären Ausdruck in Rückwärtsrichtung. | ||||
C-M-s RET |
Startet eine nicht-inkrementelle Suche nach einem regulären Ausdruck in Vorwärtsrichtung. | ||||
C-r RET |
Startet eine nicht-inkrementelle Suche nach einem regulären Ausdruck in Rückwärtsrichtung. | ||||
C-w |
Dieses Kommando steht nur zur Verfügung, wenn man sich
bereits in einem der obigen Suchmodi befindet. Bei der
inkrementellen Suche wird damit das links vom Cursor stehende
Wort in die Eingabezeile kopiert und kann durch ein erneutes
Anwenden von C-s (bzw. C-r ) als
Suchbegriff verwendet werden. Bei der nicht-inkrementellen
Suche wird damit nur nach `ganzen' Wörter gesucht (die
Befehlsfolge für eine solche Suche ist dann etwa C-s RET
C-w ).
|
||||
Ersetzen | |||||
Emacs kennt bedingtes und nicht-bedingtes Ersetzen. Beim
bedingten Ersetzen wird für jedes Vorkommen der zu ersetzenden
Zeichenkette nachgefragt, ob diese Vorkommen ersetzt oder
übersprungen werden soll. Beim `bedingungslosen' Ersetzen hingegen
werden alle Vorkommen ohne Rückfrage ersetzt. Falls bei der Eingabe des Such- oder Ersetzungsbegriffs Zeichen verwendet werden sollen, die im Ersetzungsmodus eine spezielle Bedeutung haben (wie etwa RET ), so kann man diese
spezielle Bedeutung durch Voranstellen von C-q
temporär abschalten. Beispiele: C-q RET gibt ein
"Carriage Return" Zeichen wörtlich ein; C-q C-j gibt ein
"Newline" Zeichen wörtlich ein.
| |||||
M-% |
Führt eine bedingte Ersetzung durch. Falls eine
Markierung aktiv ist, gilt der Vorgang für diese Markierung,
ansonsten von der aktuellen Curserposition bis zum Dateiende.
Falls sowohl die zu ersetzende Zeichenkette als auch der
Ersetzungsbegriff kleingeschrieben werden, beachtet Emacs das
Verhältnis von Groß- und Kleinschreibung im Ersetzungsvorgang
(Bsp: M-% foo RET bar RET ersetzt `foo' durch
`bar', `FOO' durch `BAR' und `Foo' durch `Bar').Während des Ersetzens sind folgende Kommandos möglich:
|
||||
C-M-% |
Führt eine bedingte Ersetzung durch, wobei der
zu ersetzende Begriff ein regulärer Ausdruck ist. Falls eine
Markierung aktiv ist, gilt der Vorgang für diese Markierung,
ansonsten von der aktuellen Curserposition bis zum
Dateiende. Während des Ersetzens sind dieselben Kommandos wie
beim bedingten Ersetzen ohne regulären Ausdruck
(M-% ) vorhanden.
|
||||
M-x replace-string |
Ersetzt eine Zeichenkette durch eine andere ohne Rückfragen. | ||||
M-x replace-regexp |
Ersetzt eine Zeichenkette durch einen regulären Ausdruck ohne Rückfragen. | ||||
Programmierung | |||||
TAB |
Rückt die aktuelle Zeile ein. | ||||
C-j |
Geht in die nächste Zeile und rückt sie ein. | ||||
C-M-\ |
Rückt den markierten Bereich ein. | ||||
M-m |
Geht zum ersten Nicht-Whitespace Zeichen der Zeile. | ||||
M-^ |
Verschmilzt die aktuelle Zeile mit der vorhergehenden. | ||||
M-/ |
Sucht nach einer Vervollständigung für das aktuelle Wort. | ||||
M-x (un)tabify |
Verwandelt Tabulatorzeichen in Leerzeichen (bzw. umgekehrt). | ||||
C-u DIGIT C-x $ |
Blendet alle Zeilen aus, deren Einrücktiefe gröÂßer DIGIT ist.
C-x $ blendet wieder alle Zeilen ein.
|
||||
Modi | |||||
XML | |||||
C-c / |
Schließt das aktuell offene Element. | ||||
C-c C-v |
Validiert die Datei. Das Kommando, welches zum Validieren
verwendet wird, kann z.B. so festgelegt werden:
(setq sgml-validate-command '("validateXML %b"))
|
||||
Folding | |||||
C-c @ C-o |
Zeigt den kompletten Puffer an. | ||||
C-c @ C-w |
Versteckt den kompletten Puffer. | ||||
C-c @ C-s |
Klappt den aktuellen Bereich auf. | ||||
C-c @ C-x |
Versteckt den aktuellen Bereich. | ||||
C-c @ C-f |
Erstellt einen neuen `Folding-Bereich' mit dem ausgewählten Text. |