Programmieren unter Unix Eine Tutorienreihe der Unix-AG Letzter Vortrag: Editoren Mathias Dalheimer Jean-Marie Gaillourdet ---> Christian Schmidt <--- http://www.unix-ag.uni-kl.de/ * Editoren ** Was sollte ein Editor können? - automatisches Formatieren, Einrücken und Syntaxhighlighting - unbegrenztes Undo und Redo - mehrere cut / paste clipboards - erweiterbar - komplett konfigurierbar - verschiedenes Verhalten für verschiedene Dateitypen (html, c, txt, tex, xml, java ...) - gute Dokumentation - frei verfügbar auf vielen Plattformen * vi vs. Emacs ** 30 Jähriger Krieg !? xview -fullscreen -zoom 120 bilder/vi-emacs2.jpg ** nicht ersetzen,sondern ergänzen ** man sollte beide kennen/können ** Unterschiede: - vi ist kleiner (passt auf eine Diskette) - vi lädt schneller - vi gibt es überall - vi kennt Modi, Emacs nicht - Emacs ist voll konfigurierbar: Lisp - Kommandos weniger kryptisch - für Emacs gibt es schon jede erdenkliche Erweiterung (z.B. doctor) - Emacs ist mehr als nur ein Editor ;-) * Emacs ** Allgemeines *** Geschichte 1976, MIT, Richard Stallman *** Akronym Editor MACroS Escape-Meta-Alt-Control-Shift *** GNU Emacs 1984, GNU is Not Unix, FSF *** (X)Emacs 1994, GUI Support mittlerweile hat auch Emacs GUI- Support ** Grundlagen *** Layout des Fensters Minibuffer *** Start **** ohne Dateiname emacs **** mit Dateiname(n) emacs *.tex *** Konzepte Meta (ESC), Control Control (C-x C-b vs. C-x b) M-x *** Datei **** Öffnen C-x C-f **** Speichern C-x C-s **** Schließen C-x k *** Editieren **** Cursor bewegen ***** einfach Pfeiltasten, Bildtasten ***** fortgeschritten Zeichenweise: C-f C-b Wortweise: M-f M-b Zeilenweise: C-n C-p Anfang, Ende der Zeile: C-a C-e Satzweise: M-a M-e Seitenweise: C-v vor M-v zurück Cursur zentrieren: C-l Anfang, Ende der Datei: M-< M-> **** Eingabe Kommando wiederholen: M- **** Löschen Zeichen: C-d Wort: M-d Rest der Zeile: C-k **** Cut, Copy and Paste Markieren: C-SPC Cut: C-w Copy: M-w Paste: C-y **** Undo C-_ oder C-x u *** Suchen vorwärts: C-s rückwärts: C-r *** Ersetzen M-% mit regexp: M-C-% *** Panik-Taste C-g *** Beenden C-x C-c ** Hilfe Generell: C-h C-h Tutorial: C-h t ** Übung *** Vorbereitungen **** Einloggen: Essy1-Account ! **** Kopieren von .emacs ~c_schmid/emacs-vortrag/essy1.emacs **** Verz. emacs-vortrag anlegen mkdir emacs-vortrag **** wechsel hinein cd emacs-vortrag **** kopiere uebung.txt ~c_schmid/emacs-vortrag/uebung.txt **** kopiere beispiele.sml ~c_schmid/emacs-vortrag/beispiele.sml **** starte emacs *** Aufgaben **** Grundlagen ***** öffne die Datei uebung.txt C-x C-f ***** bewege den Cursor ***** schreibe etwas ***** lösche etwas Text ***** kopiere und füge Text ein C-SPC, M-w, C-y ***** Wie lang ist die Datei? **** Suchen und Ersetzen ***** Suche das Wort 'emacs' C-s ***** ersetze es durch 'vi' M-% ** Buffer wechseln: C-x b Liste: C-x C-b ** Übung *** öffne die Datei beispiele.sml C-x C-f *** wechsel zwischen den Buffern C-x b ** Fenster öffnen C-x 2 oder C-x 3 schließen C-x 1 oder C-x 0 wechseln C-x o ** Übung *** teile das aktuelle Fenster C-x 2 *** wechsel zwischen den Fenstern C-x o *** wechsel im Fenster den Buffer C-x b *** schließe das zweite Fenster C-x 1 ** Konfiguration .emacs M-x customize options ** Modi *** Konzept **** Minor und Major *** Text *** C gud make *** auctex *** SML-MODE **** Vorbereitungen am Account in .emacs: (add-to-list 'load-path "~essy1/sml-mode-3.9.5") (load "sml-mode-startup") (setq sml-mode-info "/edu1/essy1/info/sml-mode.info") **** SML-Mode starten M-x sml-mode **** Hilfe zu sml-mode C-h a sml-mode M-x sml-mode-info **** Befehle M-x sml-send-region (C-c C-r) M-x sml-send-buffer (C-c C-b) M-x next-error ** Übung *** wechsel Buffer zu beispiele.sml C-x b *** markiere die erste Funktion C-SPC *** übergebe sie dem Interpreter C-c C-r *** ebenso die zweite *** und die dritte **** korrigiere den Fehler M-x next-error ** Tricks *** Auto-Vervollständigung M-/ *** Rechteck C-x r k C-x r t *** Tauschen C-t, M-t, C-x C-t *** Speedbar M-x speedbar *** Capitalize & Co M-c, M-l, M-u ** Spaß M-x tetris M-x doctor ** Links http://www.fsf.org/ http://www.emacswiki.org/ (Englisch)