1. Danksagungen
2. Vorwort
3. Lies mich
Wie dieses Buch aufgebaut ist
Eine Bemerkung zu den Beispielen
Lernen Sie das Zehnfingersystem, bevor Sie Vim lernen
4. Das vergessene Handbuch
Machen Sie sich mit Vims eingebauter Dokumentation vertraut
Notation für die Vim-Emulation auf der gedruckten Seite
Melodien spielen
Tastenkombinationen eingeben
Platzhalter
Die Darstellung spezieller Tasten
Während der Befehlseingabe den Modus wechseln
Mit der Kommandozeile interagieren
Die Cursorposition in einem Puffer anzeigen
Suchtreffer hervorheben
Text im visuellen Modus auswählen
Die Beispiele herunterladen
Vims Voreinstellungen nutzen
Die Rolle von Vim-Script
Die Vim-Versionen
Vim im Terminal oder Vim mit GUI? Ihre Entscheidung!
5. Der Vim-Weg
5.1. Der Punktbefehl
Der Punktbefehl ist ein Mikro-Makro
5.2. Vermeiden Sie Wiederholungen
Überflüssige Navigationsoperationen minimieren
5.3. Ein Schritt zurück, drei nach vorne
Die Änderung wiederholbar machen
Die Bewegung wiederholbar machen
Jetzt alles zusammen
5.4. Handeln, Wiederholen, Umkehren
5.5. Manuelles Suchen und Ersetzen
Unnötige Arbeit vermeiden: Suchen ohne Tippen
Die Veränderung wiederholbar machen
Jetzt alles auf einmal
5.6. Die Punktformel
Ein erneuter Blick auf die drei Punktbefehl-Textbearbeitungsaufgaben
Das Ideal: Eine Tastenaktion für die Bewegung, eine Tastenaktion für die Ausführung
I. Modi
6. Normaler Modus
6.1. Den Pinsel von der Leinwand heben
6.2. Rückgängig‐Operationen portionieren
6.3. Wiederholbare Änderungen konstruieren
Rückwärts löschen
Vorwärts löschen
Ein vollständiges Wort löschen
Unentschieden entscheiden: Was lässt sich besser wiederholen?
Erörterung
6.4. Zähler für einfache Berechnungen nutzen
6.5. Vermeiden Sie das Zählen, wenn Sie wiederholen können
Nutzen Sie einen Zähler, wenn es sinnvoll ist
6.6. Kombinieren heißt Siegen
Operator + Bewegung = Aktion
Die Kombinationskräfte von Vim erweitern
Benutzerdefinierte Operatoren nutzen vorhandene Bewegungen
Benutzerdefinierte Bewegungen nutzen vorhandene Operatoren
7. Einfügemodus
7.1. Korrekturen unmittelbar aus dem Einfügemodus durchführen
7.2. In den normalen Modus zurückwechseln
Der Einfüge‐Normalmodus
7.3. Einfügen aus einem Register ohne den Einfügemodus zu verlassen
Nutzen Sie <C-r>{Register}
für zeichenbasierte Register
7.4. Kleine Berechnungen vor Ort durchführen
7.5. Ungewöhnliche Zeichen über ihren Zeichencode eingeben
7.6. Ungewöhnliche Zeichen über Digraphen eingeben
7.7. Text im Ersetzungsmodus überschreiben
Tabulatorzeichen im virtuellen Ersetzungsmodus überschreiben
8. Visueller Modus
8.1. Den visuellen Modus verstehen
8.2. Eine visuelle Auswahl definieren
Visuelle Modi aktivieren
Zwischen visuellen Modi wechseln
Das offene Ende einer Auswahl umschalten
8.3. Zeilenbasierte visuelle Befehle wiederholen
Vorbereitung
Einmal einrücken, dann wiederholen
8.4. Ziehen Sie Operatoren wenn möglich visuellen Befehlen vor
Einen visuellen Operator nutzen
Einen Operator des normalen Modus verwenden
Erörterung
8.5. Tabellarische Daten mit dem blockbasierten Modus bearbeiten
8.6. Textspalten ändern
8.7. Etwas ans Ende der Zeilen eines unregelmäßigen visuellen Blocks anhängen
9. Kommandozeilenmodus
9.1. Vims Kommandozeile
Besondere Tasten in Vims Kommandozeilenmodus
Ex-Befehle haben eine große Reichweite
9.2. Einen Befehl auf einer Zeile oder mehreren aufeinanderfolgenden Zeilen ausführen
Zeilennummern als Adressen nutzen
Einen Zeilenbereich über eine Adresse angeben
Einen Zeilenbereich über eine visuelle Auswahl definieren
Einen Zeilenbereich über Muster angeben
Eine Adresse über einen Abstand angeben
Erörterung
9.3. Zeilen mit den Befehlen :t und :m duplizieren oder verschieben
Zeilen mit dem Befehl :t kopieren
Zeilen mit dem Befehl :m verschieben
9.4. Befehle des normalen Modus über einen Bereich ausführen
9.5. Den letzten Ex-Befehl wiederholen
9.6. Ex-Befehle mit Tab automatisch vervollständigen
Unter mehreren Treffern auswählen
9.7. Das aktuelle Wort in die Eingabeaufforderung einfügen
9.8. Befehle aus dem Befehlsverlauf wieder aufrufen
Das Kommandozeilenfenster
9.9. Befehle in der Shell ausführen
Programme in der Shell ausführen
Den Inhalt eines Puffers als Standardeingabe oder -ausgabe nutzen
Den Inhalt eines Puffers durch einen externen Befehl filtern
Erörterung
II. Dateien
10. Mehrere Dateien verwalten
10.1. Offene Dateien über die Pufferliste einsehen
Der Unterschied zwischen Dateien und Puffern
Die Pufferliste
Die Pufferliste nutzen
Puffer löschen
10.2. Puffer über die Argumentliste zu Gruppen zusammenstellen
Die Argumentliste füllen
Dateien über den Namen angeben
Dateien über Globs angeben
Dateien über eine Backtick-Expansion angeben
Die Argumentliste
10.3. Verborgene Dateien verwalten
Verborgene Puffer beim Beenden
Die Einstellung hidden vor der Ausführung von :argdo oder :bufdo aktivieren
10.4. Ihren Arbeitsbereich in Fenster teilen
Geteilte Fenster erzeugen
Den Fokus zwischen Fenstern verschieben
Fenster schließen
Anordnung und Größe von Fenstern ändern
10.5. Fensterlayouts mit Tab-Seiten organisieren
Wie man Tabs nutzt
Tabs öffnen und schließen
Zwischen Tabs wechseln
Tabs umordnen
11. Dateien öffnen und auf der Festplatte speichern
11.1. Eine Datei mit :edit über einen Dateipfad öffnen
Eine Datei relativ zum aktuellen Arbeitsverzeichnis öffnen
Eine Datei relativ zum Verzeichnis der aktiven Datei öffnen
11.2. Eine Datei mit :find über den Dateinamen öffnen
Vorbereitung
path konfigurieren
Mit :find Dateien anhand des Namens suchen
11.3. Das Dateisystem mit netrw erforschen
Vorbereitung
netrw – Vims nativer Dateiexplorer
Den Dateiexplorer öffnen
Mit geteilten Fenstern arbeiten
Mehr Dinge mit netrw anstellen
11.4. Dateien in nicht vorhandenen Verzeichnissen speichern
11.5. Eine Datei als Superuser speichern
III. Rascher vorankommen
12. Mit Bewegungen in Dateien navigieren
12.1. Halten Sie die Finger auf der Grundreihe
Lassen Sie die rechte Hand dort, wo sie hingehört
12.2. Echte Zeilen und Anzeigezeilen unterscheiden
12.3. Wortweise bewegen
Wörter und WORDS
12.4. Anhand eines Zeichens finden
Die Suche nach Zeichen kann das Ziel einschließen oder ausschließen
Denken Sie wie ein Scrabble-Spieler
12.5. Suchen zum Navigieren
Mit einer Suchbewegung arbeiten
12.6. Mit Textobjekten eine exakte Auswahl treffen
Mit Textobjekten Operationen durchführen
Erörterung
12.7. Außen löschen, innen ändern
12.8. Eine Position markieren und wieder zu ihr zurückkehren
Automatische Marken
12.9. Zwischen zueinandergehörigen Klammern hin- und herspringen
Zwischen korrespondierenden Schlüsselwörtern hin- und herspringen
13. Mit Sprüngen von Datei zu Datei
13.1. Die Sprungliste durchqueren
13.2. Die Veränderungsliste durchlaufen
Marken für die letzte Veränderung
13.3. Zum Dateinamen unter dem Cursor springen
Eine Dateierweiterung angeben
Die Verzeichnisse angeben, in denen gesucht werden soll
Erörterung
13.4. Mit globalen Marken zwischen Dateien springen
Eine globale Marke setzen, bevor Sie in Ihren Code abtauchen
IV. Register
14. Kopieren und Einfügen
14.1. Löschen, Kopieren und Einfügen mit Vims unbenanntem Register
Zeichen vertauschen
Zeilen vertauschen
Zeilen verdoppeln
Mist, ich habe meine Kopie verhunzt
14.2. Vims Register verstehen
Ein Register adressieren
Das unbenannte Register (""
)
Das Kopierregister ("0
)
Die benannten Register ("a
--"z
)
Das Schwarzes-Loch-Register ("_
)
Die Systemzwischenablage ("+
) und das
Auswahlregister ("*
)
Das Ausdrucksregister ("=
)
Weitere Register
14.3. Eine visuelle Auswahl durch ein Register ersetzen
Wörter tauschen
14.4. Aus einem Register einfügen
Zeichenbasierte Bereiche einfügen
Zeilenbasierte Textbereiche einfügen
Erörterung
14.5. Mit der Systemzwischenablage interagieren
Vorbereitung
Die Kopieroperation des Systems ausfindig machen
Den Systemkopierbefehl im Einfügemodus nutzen
Das Umschalten von paste durch Einfügen aus dem Plusregister vermeiden
15. Makros
15.1. Ein Makro aufzeichnen und ausführen
Eine Folge von Befehlen als Makro aufzeichnen
Eine Befehlsfolge wieder abspielen, indem wir ein Makro ausführen
Makros in Reihe ausführen
Das Makro parallel ausführen
15.2. Normalisieren, Zuschlagen, Abbrechen
Die Cursorposition normalisieren
Ihr Ziel mit einer wiederholbaren Bewegung treffen
Wenn eine Bewegung zu kurz greift
15.3. Makros mit einem Zähler abspielen
15.4. Eine Änderung auf zusammenhängenden Zeilen wiederholen
Eine Arbeitseinheit aufzeichnen
Ein Makro in Reihe ausführen
Ein Makro parallel ausführen
Die Entscheidung: Reihe oder parallel
15.5. Befehle an ein Makro anhängen
Erörterung
15.6. Mit einer Sammlung von Dateien arbeiten
Vorbereitung
Eine Liste der Zieldateien aufbauen
Eine Arbeitseinheit aufzeichnen
Das Makro parallel ausführen
Das Makro in Reihe ausführen
Die Änderungen an allen Dateien speichern
Erörterung
15.7. Einen Iterator auswerten, um die Elemente in einer Liste zu nummerieren
Rudimentäres Vim-Script
Das Makro aufzeichnen
Das Makro ausführen
15.8. Den Inhalt eines Makros bearbeiten
Das Problem: Ungewöhnliche Formatierung
Das Makro in ein Dokument einfügen
Den Text bearbeiten
Das Makro aus dem Dokument wieder in ein Register einfügen
Erörterung
V. Muster
16. Vergleichsmuster und Literale
16.1. Die Berücksichtigung von Groß-/Kleinschreibung in Suchmustern anpassen
Die Berücksichtigung der Groß-/Kleinschreibung global setzen
Die Berücksichtigung der Groß-/Kleinschreibung für einzelne Suchoperationen setzen
Standardmäßig eine intelligentere Berücksichtigung der Groß-/Kleinschreibung aktivieren
16.2. Nutzen Sie den \v
-Musterschalter für Regex-Suchoperationen
Hex-Farben mit der magischen Suche finden
Hex-Farben mit der »sehr magischen Suche« finden
Das Muster mit der Hex-Zeichenklasse noch weiter verbessern
Erörterung
16.3. Mit dem Literalschalter \V
eine wörtliche Suche
durchführen
16.4. Mit Klammern Subtreffer einfangen
16.5. Die Grenzen eines Wortes abstecken
16.6. Die Grenzen eines Treffers abstecken
16.7. Problematische Zeichen maskieren
/
-Zeichen bei der Vorwärtssuche maskieren
Bei der Rückwärtssuche ?
maskieren
\
sollten Sie immer maskieren
Zeichen mit Code maskieren
17. Suche
17.1. Der Suchbefehl
Eine Suche durchführen
Die Suchrichtung angeben
Die letzte Suche wiederholen
Vergangene Suchoperationen erneut abrufen
17.2. Suchtreffer hervorheben
Die Suchhervorhebung unterdrücken
17.3. Vorschau des ersten Treffers vor der Ausführung
Prüfen, ob es einen Treffer gibt
Das Suchfeld auf Grundlage von Vorschautreffern automatisch vervollständigen
17.4. Die Treffer für das aktuelle Muster zählen
17.5. Den Cursor zum Ende eines Suchtreffers verschieben
17.6. Auf einem vollständigen Suchmuster operieren
17.7. Komplexe Muster erstellen, indem man den Suchverlauf durchläuft
1: Ein ungefährer Treffer
2: Verbesserung
3: Nächste Iteration
4: Eine letzte Korrektur
Erörterung
17.8. Nach der aktuellen visuellen Auswahl suchen
Im visuellen Modus nach dem aktuellen Wort suchen
Nach der aktuellen Auswahl suchen (Stand der Technik)
Nach der aktuellen Auswahl suchen (Kurzfassung)
18. Ersetzung
18.1. Der »substitute«-Befehl
Den »substitute«-Befehl mit Flags anpassen
Sonderzeichen für den Ersetzungsstring
18.2. Alle Treffer in einer Datei finden und ersetzen
18.3. Alle Ersetzungen in Augenschein nehmen
Erörterung
18.4. Das letzte Suchmuster wiederverwenden
Es ist nicht immer angemessen
Implikationen für den Befehlsverlauf
18.5. Durch den Inhalt eines Registers ersetzen
Über den Wert übergeben
Per Referenz übergeben
Vergleich
18.6. Den letzten Ersetzungsbefehl wiederholen
Eine zeilenbasierte Substitution über eine ganze Datei wiederholen
Den Bereich eines Ersetzungsbefehls anpassen
Erörterung
18.7. CSV-Felder mit Subtreffern umordnen
18.8. Auf der Ersetzung Berechnungen durchführen
Das Suchmuster
Der Ersetzungsbefehl
18.9. Zwei oder mehr Wörter austauschen
Das andere Wort zurückliefern
Beide Wörter finden
Nun alles zusammen
Erörterung
18.10. Suchen und Ersetzen über mehrere Dateien
Der Ersetzungsbefehl
Einen Ersetzungsbefehl auf allen Dateien des aktuellen Projekts ausführen
Eine Liste der Dateien aufbauen, die unser Zielmuster enthalten
19. Der »global«-Befehl
19.1. Der Befehl »global«
19.2. Zeilen löschen, die ein Muster enthalten
Passende Zeilen mit :g/re/d löschen
Mit ‘:v/re/d’ nur passende Zeilen finden
19.3. Alle TODO-Elemente in einem Register sammeln
Erörterung
19.4. Die Properties aller Regeln in einer CSS-Datei sortieren
Properties für einen Regelblock sortieren
Properties für alle Regelblöcke sortieren
Erörterung
VI. Werkzeuge
20. Quellcode mit ctags indizieren und navigieren
20.1. ctags
exuberant-ctags installieren
Codedateien mit ctags indizieren
Die Anatomie einer tags-Datei
Schlüsselwörter werden über ein Muster, nicht über eine Zeilennummer adressiert
Schlüsselwörter werden mit Metadaten versehen
20.2. Vim für die Zusammenarbeit mit ctags konfigurieren
Vim sagen, wo die Tag-Datei zu finden ist
Die Tag-Datei erstellen
Der einfache Fall: ctags manuell ausführen
ctags jedes Mal automatisch ausführen, wenn eine Datei gespeichert wird
ctags automatisch mit Hooks des Versionskontrollsystems ausführen
Erörterung
20.3. Mit Vims Navigationsbefehlen zu Schlüsselwortdefinitionen navigieren
Zu einer Schlüsselwortdefinition springen
Das Sprungziel angeben, wenn es mehrere Treffer für ein Schlüsselwort gibt
Ex-Befehle verwenden
21. Code kompilieren und Fehler über die Quickfix-Liste einsehen
21.1. Code kompilieren, ohne Vim zu verlassen
Vorbereitung
Das Projekt in der Shell kompilieren
Das Projekt aus Vim heraus kompilieren
21.2. Die Quickfix-Liste durchlaufen
Elementare Quickfix-Bewegungen
Schneller Vor- und Rücklauf
Das Quickfix-Fenster
21.3. Ergebnisse aus einer alten Quickfix-Liste abrufen
21.4. Den externen Compiler anpassen
:make für den Aufruf von Nodelint konfigurieren
Die Quickfix-Liste auf Basis der Ausgabe von nodelint füllen
makeprg und errorformat mit einem einzigen Befehl einrichten
22. Projektübergreifene Suche mit grep, vimgrep und anderen
22.1. grep aufrufen, ohne Vim zu verlassen
grep von der Kommandozeile nutzen
grep in Vim aufrufen
22.2. Das grep-Programm anpassen
Vims grep-Standardeinstellungen
:grep ack aufrufen lassen
ack zu Zeile und Spalte springen lassen
22.3. Grep mit Vims interner Such-Engine
In einer Datei und dann im ganzen Projekt suchen
Suchverlauf und :vimgrep
23. Die automatische Vervollständigung
23.1. Vims automatische Schlüsselwortvervollständigung
Die Autovervollständigung anstoßen
23.2. Mit dem Autovervollständigungsmenü arbeiten
Die Wortliste durchblättern, ohne das Dokument zu verändern
Das Dokument beim Durchlaufen der Wortliste aktualisieren
Alle Vorschläge verwerfen
Die Wortliste bei der Eingabe verfeinern
23.3. Die Quelle der Schlüsselwörter
Die Pufferliste
Eingeschlossene Dateien
Tag-Dateien
Alles zusammen
23.4. Wörter aus dem Wörterbuch vervollständigen
23.5. Ganze Zeilen vervollständigen
23.6. Autovervollständigung von Dateinamen
23.7. Autovervollständigung mit Kontextbewusstsein
24. Tippfehler mit Vims Rechtschreibprüfung aufspüren und beheben
24.1. Die Rechtschreibung Ihrer Texte prüfen
Vims Rechtschreibprüfung bedienen
24.2. Alternative Rechtschreibprüfungswörterbücher verwenden
Eine regionale Variante einer Sprache angeben
Rechtschreibprüfungsdateien für andere Sprachen
24.3. Der Rechtschreibprüfungsdatei Wörter hinzufügen
Eine Rechtschreibprüfungsdatei für Fachterminologie erstellen
24.4. Rechtschreibfehler aus dem Einfügemodus ändern
Vorbereitung
Das übliche Verfahren: In den normalen Modus wechseln
Der schnelle Weg: Die Rechtschreib‐Autovervollständigung
25. Und was jetzt?
Übung, Übung, Übung!
Machen Sie sich Vim zu eigen
Machen Sie sich mit der Säge vertraut, und schärfen Sie sie dann
A. Vim an die eigenen Bedürfnisse anpassen
Vims Einstellungen en passant ändern
Ihre Konfiguration in einer vimrc-Datei speichern
Anpassungen auf bestimmte Dateitypen anwenden
Stichwortverzeichnis
Ich danke Bram Moolenaar, der Vim geschaffen hat, und auch all jenen, die zur Entwicklung von Vim beigetragen haben. Vim ist ein zeitloses Stück Software, und ich freue mich darauf, mit ihm zu reifen.
Ich danke allen bei Pragmatic Bookshelf, die mir geholfen haben, das Buch so gut zu machen, wie ich es eben machen konnte. Besonderer Dank gilt Kay Keppler, meinem Entwicklungslektor, der mich als Autor an die Hand genommen und mich bei der Gestaltung dieses Buches unterstützt hat – den wachsenden Qualen und meinen gelegentlichen Ausbrüchen zum Trotz. Außerdem möchte ich David Kelly dafür danken, dass er meine ausgefallenen Formatierungswünsche so geschickt umgesetzt hat.
Vim in der Praxis war nicht von Anfang an als Rezeptbuch konzipiert. Es war Susannah Pfalzer, die erkannte, dass es in dieser Form am besten funktionieren würde. Es war qualvoll, so viel umschreiben zu müssen, aber als ich das tat, schuf ich den ersten Entwurf, mit dem ich zufrieden war. Susannah weiß, was gut ist, und ich danke ihr dafür, dass sie mich von ihren Einsichten profitieren ließ.
Mein Dank gilt auch Dave Thomas und Andy Hunt dafür, dass sie Pragmatic Bookshelf geschaffen haben. Ich würde von keinem anderen Verlag repräsentiert werden wollen und fühle mich geehrt, neben den anderen Titeln in ihrem Programm aufgeführt zu werden.
Vim in der Praxis wäre ohne meine technischen Gutachter nicht möglich gewesen. Jeder von Euch hat etwas beigetragen und bei der Gestaltung des Buches geholfen. Ich danke Adam McCrea, Alan Gardner, Alex Khan, Ali Alwasity, Anders Janmyr, Andrew Donaldson, Angus Neil, Charlie Tanksley, Ches Martin, Daniel Bretoi, David Morris, Denis Gorin, Elyézer Mendes Rezende, Erik St. Martin, Federico Galassi, Felix Geisendörfer, Florian Vallen, Graeme Mathieson, Hans Hasselberg, Henrik Nyh, Javier Collado, Jeff Holland, Josh Sullivan, Joshua Flanagan, Kana Natsuno, Kent Frazier, Luis Merino, Mathias Meyer, Matt Southerden, Mislav Marohnic, Mitch Guthrie, Morgan Prior, Paul Barry, Peter Aronoff, Peter Rihn, Philip Roberts, Robert Evans, Ryan Stenhouse, Steven! Ragnarök, Tibor Simic, Tim Chase, Tim Pope, Tim Tyrrell und Tobias Sailer.
Außerdem möchte ich der gesamten Vim‐Gemeinschaft dafür danken, dass sie ihre Erkenntnisse über das Internet mit anderen teilt. Viele von den Tipps in diesem Buch habe ich mir angeeignet, indem ich die Vim‐Beiträge auf StackOverflow und die vim_use‐Mailingliste gelesen habe.
Tim Popes rails.vim
‐Plugin hat entscheidend dazu
beigetragen, dass ich Vim als ernsthaftes Werkzeug zu betrachten begann.
Viele seine anderen Plugins sind ein wesentlicher Bestandteil meiner
Vim‐Installation. Viel gelernt habe ich auch durch den Einsatz der Plugins
von Kana Natsuno, dessen selbst definierte Textobjekte zu den besten
Erweiterungen von Vims Kernfunktionen zählen, die mir begegnet sind. Vielen
Dank Euch beiden, dass Ihr die Säge geschärft habt, damit wir alle davon
profitieren können.
Joe Rozner danke ich dafür, dass er mir den
wakeup
‐Quellcode zur Verfügung gestellt hat, den ich bei
der Einführung des :make
-Befehls verwendet habe. Ich danke Oleg
Efimov für seine raschen Antworten bei nodelint‐Problemen und Ben Cormack
für die Roboter- und Ninja‐Illustrationen.
Im Januar 2012 sind wir nach Berlin gezogen. Die dortige IT-Gemeinschaft hat mich dazu gebracht, dieses Buch fertigzustellen. Ich möchte Gregor Schmidt für die Gründung der Vim Berlin‐Nutzergruppe danken und Jan Schulz‐Hofen dafür, dass er den Gastgeber für unsere Treffen gab. Die Gelegenheit, vor anderen Vim‐Nutzern zu reden, hat mir unglaublich geholfen, Ordnung in meine Gedanken zu bringen. Dafür bin ich allen dankbar, die die Vim Berlin‐Meetings besucht haben. Ich danke Daniel und Nina Holle, die uns Ihre Wohnung überlassen haben. Es hat sich dort traumhaft gelebt und gab mir ein produktives Arbeitumfeld.
Im März 2011 musste ich mich einer Operation unterziehen, um Beläge entfernen zu lassen, die meinen Darm blockierten. Leider war ich zu diesem Zeitpunkt weit von zu Hause entfernt. Zum Glück war meine Frau an meiner Seite. Hannah ließ mich ins South Sinai Hospital einweisen, wo ich ausgezeichnet behandelt wurde. Vielen Dank der gesamten dortigen Belegschaft für ihre freundliche Unterstützung und vielen Dank an Dr. Shawket Gerges, der mich erfolgreich operiert hat.
Als meine Mutter erfuhr, dass ich mich einer Operation unterziehen musste, ließ sie alles stehen und liegen und nahm den nächsten Flieger nach Ägypten. Da das Land gerade in Aufruhr war, erforderte dieser Schritt gewaltigen Mut. Ich kann mir nicht vorstellen, wie Hannah und ich diese schwere Zeit ohne die Unterstützung und Erfahrung durchgestanden hätten, die meine Mutter uns gab. Ich schätze mich glücklich, diese beiden wunderbaren Frauen in meinem Leben zu wissen.
Gängige Meinung ist, dass Vim schwer zu erlernen sei. Ich denke, die
meisten Vim‐Nutzer würden dem widersprechen. Sicher, es gibt einige
anfängliche Hürden, aber wenn man einmal den vimtutor
hinter sich hat und die Grundlagen
dessen kennt, was man in seine vimrc
stecken sollte, erreicht man schnell einen Punkt, an dem man tatsächlich mit
Vim Arbeit erledigen kann – eine Produktivität, die vielleicht noch etwas
holprig sein mag.
Und was ist der nächste Schritt? Die Antwort des Internets ist der
»Tipp«, ein Rezept für die Lösung einer bestimmten Aufgabe. Sie könnten nach
spezifischen Tipps suchen, wenn Sie den Eindruck haben, dass Ihre Lösung für
ein Problem nicht optimal ist. Oder Sie könnten im Voraus einige der
beliebteren Tipps lesen. Diese Strategie funktioniert – so habe ich Vim
gelernt. Aber so dauert das seine Zeit. Sicher ist es hilfreich, wenn man
erfährt, dass *
nach dem Wort unter
dem Cursor sucht, aber es sorgt noch nicht dafür, dass Sie wie ein
Vim‐Meister denken.
Vielleicht verstehen Sie jetzt meine Skepsis, als ich erfuhr, dass
Vim in der Praxis das Tipps‐Format nutzt. Wie können
ein paar Hundert Tipps das erreichen, wozu ich Tausende brauchte? Nach nur
wenigen Seiten erkannte ich, dass meine Definition von »Tipp« engstirnig
war. Im Gegensatz zum von mir erwarteten Problem/Lösung‐Muster lehren die
Tipps in Vim in der Praxis, wie ein erfahrener
Vim‐Nutzer zu denken. In gewisser Hinsicht sind es eher Parabeln als
Rezepte. Die ersten paar Tipps sind Lektionen, die die Bandbreite der
Anwendbarkeit des .
-Befehls
erläutern. Das ist ein Eckpfeiler im Repertoire jedes kompetenten
Vim‐Nutzers. Aber ohne eine Anleitung hat es mich Jahre gekostet, bis ich
das erkannt hatte.
Aus diesem Grund freut mich die Veröffentlichung von Vim in der Praxis. Denn jetzt weiß ich, was ich Vim‐Neulingen sagen soll, wenn sie mich fragen, was der nächste Schritt ist. Schließlich hat Vim in der Praxis sogar mir noch einige Dinge beigebracht.
Tim Pope
Vim-Kernentwickler, April 2012
Vim in der Praxis richtet sich an Programmierer, die die nächste Stufe erklimmen wollen. Sie haben sicher schon gehört, dass Vim in den Händen eines Experten so schnell Text ausspuckt wie Ihr Kopf Gedanken. Die Lektüre dieses Buches ist der erste Schritt zu diesem Ziel.
Vim in der Praxis ist die Überholspur auf dem Weg zur Vim‐Meisterschaft. Es wird Ihnen nicht das Händchen halten, aber Anfänger können sich alle erforderlichen Voraussetzungen aneignen, indem sie den Vim‐Tutor durcharbeiten, eine interaktive Übung, die in Vim eingebaut ist.[1]Vim in der Praxis erweitert dieses Fundament, indem es die wesentlichen Konzepte herausstreicht und charakteristische Verwendungsweisen vorstellt.
Vim ist hochgradig konfigurierbar. Aber Anpassungen sind immer eine Frage des Geschmacks. Deswegen habe ich versucht, keine Empfehlungen dazu abzugeben, was Sie in Ihre vimrc-Datei aufnehmen sollten und was nicht. Stattdessen konzentriert sich Vim in der Praxis auf die zentralen Einrichtungen des Editors – das, was immer da ist, unabhängig davon, ob Sie über SSH auf einem entfernten Server arbeiten oder ob Sie mit einer lokalen GVim‐Instanz arbeiten, in der Plugins installiert sind, die zusätzliche Funktionen ergänzen. Wenn Sie die zentralen Einrichtungen von Vim beherrschen, gibt Ihnen das einen überall anwendbaren Zugang zu einem Allzweckwerkzeug in Sachen Textverarbeitung.
Vim in der Praxis ist ein Rezeptbuch. Es ist nicht für eine einmalige durchgängige Lektüre gedacht. (Das meine ich wirklich so! Am Anfang des nächsten Kapitels empfehle ich Ihnen sogar, es zu überspringen und gleich zur Tat zu schreiten.) Alle Kapitel bestehen aus einer Sammlung von Tipps zu einem bestimmten Thema. Jeder dieser Tipps zeigt, wie Sie ein bestimmtes Feature nutzen. Einige der Tipps sind in sich abgeschlossen. Andere sind von Inhalten abhängig, die an anderer Stelle des Buches behandelt werden. Die entsprechenden Tipps sind durch Querverweise miteinander verbunden, damit Sie leicht alles finden können, was Sie benötigen.
Vim in der Praxis als Ganzes bietet keine Entwicklung vom Anfänger zum Experten, die einzelnen Kapitel hingegen schon. Ein weniger erfahrener Leser sollte bei der ersten Beschäftigung mit dem Buch vielleicht nur die ersten Tipps in jedem Kapitel lesen. Ein fortgeschrittenerer Leser könnte sich eher auf die späteren Tipps in den einzelnen Kapiteln konzentrieren oder sich nach Bedarf frei durch das Buch bewegen.
In Vim gibt es immer mehrere Möglichkeiten, eine bestimmte Aufgabe
zu lösen. Beispielsweise habe ich alle Probleme in Kapitel 5 so gestaltet, dass man mit ihrer Hilfe den
Einsatz des Punktbefehls illustrieren konnte, doch jedes davon hätte man
auch mithilfe des :substitute
-Befehls lösen
können.
Es kann vorkommen, dass Sie sich, wenn Sie meine Lösung sehen, fragen: »Wäre es nicht einfacher, wenn man das so machen würde?« Gut möglich, dass Sie damit recht haben! Meine Lösungen illustrieren eine bestimmte Technik. Blicken Sie über ihre scheinbare Einfachheit hinweg, und suchen Sie nach Ähnlichkeiten mit Aufgaben, vor denen Sie täglich stehen. Das sind die Probleme, bei deren Lösung Ihnen diese Techniken Zeit sparen werden.
Wenn Sie nach unten blicken müssen, um die Tasten auf der Tastatur zu finden, werden sich die Vorteile, die das Erlernen des Umgangs mit Vim bietet, nicht so schnell einstellen. Dass Sie das Zehnfingersystem erlernen, ist eine unumgängliche Voraussetzung.
Vims Vorfahren sind die klassischen Unix‐Editoren vi
und ed
(siehe Zur Etymologie von Vim (und seiner Familie)). Diese sind älter als die Maus und alle
Zeigen-und‐Klicken-Schnittstellen, die diese mit sich gebracht hat. In Vim
kann man alles mit der Tastatur erledigen. Wenn man das Zehnfingersystem
beherrscht, heißt das, dass Vim alles schneller
macht.
[1] http://vimdoc.sourceforge.net/htmldoc/usr_01.html#vimtutor