Vim in der Praxis

Inhaltsverzeichnis

Vim in der Praxis

Blitzschnell Text editieren

Drew Neil

Lars Schulten

Inhalt

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

Kapitel 1. Danksagungen

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.

Kapitel 2. Vorwort

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.

Anmerkung

Tim Pope

Vim-Kernentwickler, April 2012

Kapitel 3. Lies mich

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.

Wie dieses Buch aufgebaut ist

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.

Eine Bemerkung zu den Beispielen

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.

Lernen Sie das Zehnfingersystem, bevor Sie Vim lernen

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