============================================= Emacs Crash-Kurs an der OpenRheinRuhr 2011 ============================================= Axel Beckert http://noone.org/talks/emacs/ ============================================= © 2011 CC SA 3.0 DE ============================================= Notation "C-" = Control-Taste drücken und halten, anschliessend die danach genannte Taste drücken, wieder loslassen und dann auch die Control-Taste wieder loslassen. "M-" = Meta- (oder Alt-) Taste drücken und halten, anschliessend die danach genannte Taste drücken, wieder loslassen und dann auch die Meta- bzw. Alt-Taste wieder loslassen. Alternativ kann man auch erst die Escape-Taste drücken und direkt wieder loslassen und anschliessend die danach genannte Taste drücken und wieder loslassen. "S-" = Shift-Taste drücken und halten, anschliessend die danach genannte Taste drücken, wieder loslassen und dann auch die Shift-Taste wieder loslassen. Das Wichtigste * Wie komme ich wieder raus? C-x C-c * Halt! Stopp! Abbrechen! C-g * Undo C-x C-u oder C-_ oder C-/ Buffers, Minibuffer, Windows und Frames * Buffers Vergleichbar mit Tabs in Webbrowsern. Eine Datei pro Buffer. Buffers müssen keine Datei enthalten. Beispiele: *scratch* und *Messages* * Minibuffer Status- und Eingabe-Zeile am unteren Rand (Vergleichbar in Webbrowsern: Status- und Adresszeile in einem) * Windows Bereich in dem ein Buffer angezeigt wird. * Frames Unter grafischen Oberflächen ein Fenster. Kann mehrere "Windows" enthalten. Navigieren in Emacs * Cursor-Tasten und Seite Auf und Ab, Pos1/Home und Ende gehen natürlich auch. * Cursor C-f vorwärts (forward) C-b rückwärts (backward) - Konflikt mit tmux! M-f oder C-→ ein Wort vorwärts (forward) M-b oder C-← ein Wort rückwärts (backward) C-n nächste Zeile (next line) C-p vorherige Zeile (previous line) C-a Zeilenanfang - Konflikt mit screen! C-e Zeilenende * Seitenweise Blättern; Anfang und Ende C-v Seite nach unten M-v Seite nach oben M-< Anfang des Buffers M-> Ende des Buffers * Zeile im "Window" Zentrieren C-l verschieden oft drücken: 1x: Buffer wird so gescrollt, dass die aktuelle Zeile in der Mitte des Windows liegt 2x: Buffer wird so gescrollt, dass die aktuelle Zeile am Anfang des Windows liegt 3x: Buffer wird so gescrollt, dass die aktuelle Zeile am Ende des Windows liegt Editieren in Emacs * Löschen C-d oder Entf Zeichen unter Cursor löschen Backspace Zeichen vor Cursor löschen M-d Wort ab Cursor löschen M-Backspace Wort vor Cursor löschen M-\ Alle zusammenhängenden Leerzeichen löschen M-Leertaste Alle zusammenhängenden Leerzeichen bis auf eines löschen C-k Löschen bis Zeilenende * Blöcke markieren Shift + Cursortasten wie unter Windows oder GTK gewohnt C-Space Setze Anfangsmarkierung C-Space C-Space Lösche Anfangsmarkierung C-x C-x Tausche Anfangsmarkierung und aktuelle Position aus Aktivierung und Deaktivierung der Hervorhebung der markierten Region durch M-x transient-mark-mode RET * Cut & Copy C-w oder 2x rechte Maustaste Cut M-w oder 1x rechte Maustaste Copy * Paste C-y, S-Ins (Shift-Einfügen) oder mittlere Maustaste Paste ("Yank") M-y Ersetze letzten Paste durch vorhergehenden Inhalt des Zwischenspeichers * Inkrementelle Suche C-s Suche vorwärts C-r Suche rückwärts C-M-s RegExp-Suche vorwärts C-M-r RegExp-Suche rückwärts * Buchstaben- und Wortdreher C-t Buchstaben unter und nach dem Cursor austauschen (Konflikt mit Ratpoison Window Manager!) M-t die zwei Wörter um den Cursor austauschen * Groß- und Kleinschreibung M-u Nächstes Wort großschreiben (Uppercase) M-l Nächstes Wort Kleinschreiben (Lowercase) M-c Nächstes Wort mit großem Anfangsbuchstaben schreiben, Rest klein (Wordcase/Camelcase) * Nächste Eingabe Quoten C-q und danach das gewünschte Zeichen eingeben. Arbeiten mit Buffern und Windows * Dateien öffnen C-x C-f Datei in neuem Buffer öffnen C-x C-r Datei schreibgeschützt in neuem Buffer öffnen C-x C-v Datei in aktuellen Buffer ersetzen durch neu zu öffnende Datei * Dateien speichern C-x C-s aktuellen Buffer speichern C-x s alle Buffer mit ungespeicherten Änderungen speichern C-x C-q Schreibschutz an/aus (toggle read-only) C-x C-w aktuellen Buffer in andere Datei speichern * Wechseln zwischen Buffern C-x b RET Wechsle zu vorherigem Buffer C-x b Buffername RET Wechsle zu genanntem, Buffer (Tab-Completion verfügbar, nicht existente Buffer werden ohne Datei-Assoziation angelegt) C-x k RET Kille aktuellen Buffer C-x k Buffername RET Kille genannten Buffer (Tab-Completion verfügbar) C-x C-b Zeige Bufferliste * Windows aufsplitten C-x 2 horizontal splitten C-x 3 vertikal splitten (Siehe auch M-x follow-mode) C-x 1 nur noch ein Window C-x 0 Window schliessen C-x o Zu anderem/nächstem Window wechseln (o = other) * Arbeiten mit Frames C-x 5 2 neuer Frame C-x 5 1 mache diesen Frame den einzigen C-x 5 0 schließe diesen Frame C-z Frame minimieren/iconifizieren (funktioniert nicht mit allen Window-Managern, z.B. ist xmonad bekannt für Probleme damit) emacs -nw Emacs im Textmodus starten (nw = no X window) Suchen und Ersetzen * Interaktives Suchen und Ersetzen Normal: M-% (M-S-5) RegExp: C-M-% (C-M-S-5) Ersetzen? y = Ja n = Nein ! = Alle q = Hier aufhören ^ = zum vorherigen Treffer springen Zeilenumbrüche? Unix-Zeilenumbruch: C-q C-j MS-DOS-Zeilenumbruch: C-q C-m Universelles Prefix C-, C-u C-u fügt 4 Leerzeichen ein, hilfreich zur Einrückung C-u 80 # fügt 80 "#" Zeichen ein C-u 10 C-u 0 fügt 10 "0" Zeichen ein Client und Server Server starten: M-x start-server Datei mit bereits offenem Emacs editieren: emacsclient datei.txt Editieren einer per emacsclient geöffneten Datei: C-x # Eingebauter Dateimanager (Dired) Aufrufen mit C-x d Aktualisieren: g Shell-Kommando auf markierte Datei: ! Datei umbenennen: R Datei kopieren: C Beenden: q Datei markieren: m Alle Backup-Dateien markieren: ~ Alle ausführbaren Dateien markieren: * Markierte Dateien löschen: x Makros C-x ( Aufnahme starten C-x ) Aufnahme beenden C-x e Makro abspielen e Makro nochmals abspielen Nette Minor-Modes M-x auto-fill-mode (Siehe auch M-q und Tab) M-x show-paren-mode (Siehe auch C-M-f und C-M-b) M-x font-lock-mode (Je nach Major-Mode) M-x develock-mode (Je nach Major-Mode, apt-get install develock-el) Dateien auf entfernten Rechnern editieren; TRAMP * TRAMP = Transparent Remote Access, Multiple Protocols * Syntax: /method:user@remotehost:filename * Protocols: ssh, sudo, su, etc. * http://www.gnu.org/s/tramp/ * http://www.emacswiki.org/emacs/TrampMode Nützliche Debian-Pakete rund um Emacs * debian-el (z.B. M-x debian-bug, sources.list mode) * devscripts-el (z.B. bts mode) * dpkg-dev-el (z.B. changelog mode, control file mode, copyright mode) * emacs-goodies-el (z.B. apache-mode) * whizzytex (WYSIWYG TeX und LaTeX) Schnelle Online-Hilfe C-h a Apropos (RegExp-Suche nach Funktionen, Variablen, …) C-h k Beantwortet die Frage "Was macht dieser Tastendruck?" C-h f Funktionen anzeigen C-h v Variablen anzeigen C-h m Hilfe zum aktuellen Major-Mode und aktiven Minor-Modes C-h t Tutorial Resourcen und Links * Mastering Emacs (Blog): http://www.masteringemacs.org/ * EmacsWiki: http://www.emacswiki.org/ * Emacs Starter Kit: https://github.com/technomancy/emacs-starter-kit/ * Conkeror (Webbrowser, der sich wie Emacs bedient): http://conkeror.org/ Danke Kan-Ru Chen und Sebastian Tennant für die Beiträge zur relativ spontanen Emacs Skills Exchange Session an der DebConf11, aus der dieser Crashkurs entstand.