Vim in der Praxis - blitzschnell Text editieren - Drew Neil - ebook

Vim in der Praxis - blitzschnell Text editieren ebook

Drew Neil

0,0

Opis

Vim ist ein schlanker Texteditor, der Ihnen hilft, schneller und deutlich effizienter zu programmieren. Vim in der Praxis bietet Ihnen anhand von über 100 Tipps einen raschen Einstieg in die Kernfunktionen des Editors und hilft Ihnen, problemlos die verzwicktesten Bearbeitungsaufgaben und Schreibarbeiten zu bewältigen. Vim-Experte Drew Neil nutzt realistische Praxisbeispiele, um Ihnen Schritt für Schritt zu zeigen, wie Sie mit Vim schneller ans Ziel kommen. Er zeigt Ihnen zahlreiche neue Möglichkeiten, effizienter mit Vim zu arbeiten, ganz gleich ob Sie ein Vim-Neuling oder bereits ein erfahrener Vim-Nutzer sind.

Ebooka przeczytasz w aplikacjach Legimi na:

Androidzie
iOS
czytnikach certyfikowanych
przez Legimi
Windows
10
Windows
Phone

Liczba stron: 521

Odsłuch ebooka (TTS) dostepny w abonamencie „ebooki+audiobooki bez limitu” w aplikacjach Legimi na:

Androidzie
iOS



Vim in der Praxis

Blitzschnell Text editieren

DrewNeil

LarsSchulten

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

Kapitel 4. Das vergessene Handbuch

In Vim in der Praxis versuche ich, Beispiele vorzuführen, nicht zu beschreiben. In geschriebener Form ist das nicht ganz so einfach. Deswegen habe ich zur Veranschaulichung der Schritte, die während einer interaktiven Arbeitssitzung vorgenommen werden, eine einfache Notation gewählt, die die Tastenbetätigungen und den Inhalt des Vim‐Puffers nebeneinander darstellt.

Wenn Sie gleich zur Tat schreiten wollen, können Sie dieses Kapitel – für den Augenblick – problemlos überspringen. Es beschreibt die Konventionen, die in Vim in der Praxis verwendet werden, und wahrscheinlich werden Sie viele selbsterklärend finden. Irgendwann werden Sie aber auf ein Symbol stoßen und sich fragen, wofür es steht. Wenn das passiert, sollten Sie zurückblättern und in diesem Kapitel nach einer Antwort suchen.

Machen Sie sich mit Vims eingebauter Dokumentation vertraut

Am besten macht man sich mit Vims Dokumentation vertraut, indem man Zeit mit ihr verbringt. Um das zu vereinfachen, habe ich »Hyperlinks« auf die Einträge in Vims Dokumentation angelegt. Hier ist beispielsweise der »Hyperlink« für den Vim‐Tutor: :h vimtutor.

Das Symbol hat eine doppelte Funktion. Zunächst dient es als Wegweiser, der Ihr Auge auf diese hilfreichen Referenzen aufmerksam machen soll. Zweitens können Sie auf das Symbol klicken, wenn Sie dieses Buch auf einem elektronischen Gerät lesen, das mit dem Internet verbunden ist, um direkt zum entsprechenden Eintrag in Vims Online‐Dokumentation zu springen. In dieser Hinsicht sind es wahrhaftig echte Hyperlinks.

Aber was ist, wenn Sie die Papierfassung dieses Buches lesen? Keine Sorge. Wenn Sie eine Vim‐Installation in Reichweite haben, können Sie einfach den Befehl in der Form eingeben, in der er vor dem Symbol erscheint.

Geben Sie beispielsweise :h vimtutor ein (:h ist eine Abkürzung für den Befehl :help). Betrachten Sie das als eine eindeutige Adresse für die Dokumentation zum Vim‐Tutor: eine Art URL. In dieser Hinsicht ist es eine Art Hyperlink auf Vims eingebaute Dokumentation.

Notation für die Vim-Emulation auf der gedruckten Seite

Vims modale Schnittstelle unterscheidet ihn von den meisten anderen Texteditoren. Bemühen wir eine musikalische Analogie – vergleichen wir die Tasten einer Qwertz‐Tastatur mit den Tasten eines Klaviers. Ein Pianist kann eine Melodie spielen, indem er Tasten nacheinander drückt, oder er kann mehrere Tasten gleichzeitig drücken, um einen Akkord zu spielen. In den meisten Texteditoren werden Tastenkürzel ausgelöst, indem eine Taste gedrückt wird, während gleichzeitig eine oder mehrere Modifizierertasten wie die Control‐Taste oder die Befehlstaste gedrückt werden. Das ist das Qwertz-Äquivalent dafür, wie man auf einem Klavier einen Akkord spielt.

Einige von Vims Befehlen werden ebenfalls durch Akkorde oder Tastenkombinationen ausgelöst, aber die Befehle des normalen Modus sind für die Eingabe als Folge einzelner Tastenbetätigungen konzipiert. Das ist das Qwertz-Äquivalent dafür, wie man auf einem Klavier eine Melodie spielt.

Ctrl-s ist eine Konvention, die häufig verwendet wird, um Tastenkombinationen darzustellen. Das bedeutet: »Drücken Sie gleichzeitig die Control‐Taste und die s-Taste.« Diese Konvention ist jedoch nicht sonderlich gut geeignet, um Vims modalen Befehlssatz zu beschreiben. In diesem Abschnitt werden wir Ihnen die Notation vorstellen, die wir in Vim in der Praxis nutzen werden, um die Verwendung von Vim zu illustrieren.

Melodien spielen

Im normalen Modus bauen wir Befehle auf, indem wir eine Taste oder mehrere Tasten nacheinander betätigen. Diese Befehle sehen folgendermaßen aus:

NotationBedeutung

x

Drücken Sie einmal x.

dw

Drücken Sie nacheinander d, dann w.

dap

Drücken Sie nacheinander erst d, dann a und schließlich p.

Die meisten dieser Sequenzen umfassen zwei bis drei Tastenbetätigungen, aber einige sind länger. Es kann eine Herausforderung sein, die Bedeutung eines Vim‐Befehls für den normalen Modus zu entschlüsseln, aber mit Übung werden Sie besser darin werden.

Tastenkombinationen eingeben

Wenn Sie eine Tastenkombination der Form <C-p> sehen, heißt das nicht »Drücken Sie <, dann C, dann - und so weiter«. Die <C-p>-Notation entspricht der Ctrl-p-Notation und bedeutet: »Drücken Sie gleichzeitig die Tasten <Ctrl> und p.«

Ich habe diese Notation nicht ohne Grund gewählt. Sie wird in Vims Dokumentation verwendet (:h key-notation), und wir können sie auch nutzen, um eigene Tastenzuordnungen zu erstellen. Einige Befehle von Vim werden gebildet, indem man Tastenkombinationen und aufeinander folgende Tastenbetätigungen kombiniert. Diese Notation kommt gut mit ihnen klar. Betrachten Sie die folgenden Beispiele:

NotationBedeutung

<C-n>

Drücken Sie gleichzeitig <Ctrl> und n.

g<C-]>

Drücken Sie erst g und dann gleichzeitig <Ctrl> und ].

<C-r>0

Drücken Sie erst gleichzeitig <Ctrl> und r und dann 0.

<C-w><C-=>

Drücken Sie erst gleichzeitig <Ctrl> und w und dann wieder gleichzeitig <Ctrl> und =.

Platzhalter

Viele der Befehle von Vim erfordern es, dass nacheinander zwei oder mehr Tasten betätigt werden. Auf einige Befehle muss eine bestimmte Art von Tasten folgen, während auf andere eine beliebige Taste auf der Tastatur folgen kann. Ich nutze geschweifte Klammern, um die Tasten anzuzeigen, die auf einen Befehl folgen können. Hier sind einige Beispiele:

NotationBedeutung

f{Zeichen}

Drücken Sie f, und geben Sie anschließend ein beliebiges anderes Zeichen ein.

ˋ{a-z}

Drücken Sie ˋ, und geben Sie anschließend einen beliebigen Kleinbuchstaben ein.

m{a-zA-Z}

Drücken Sie m, und geben Sie anschließend einen beliebigen Klein- oder Großbuchstaben ein.

d{Bewegung}

Drücken Sie d, und geben Sie anschließend einen beliebigen Bewegungsbefehl ein.

<C-r>{Register}

Drücken Sie gleichzeitig <Ctrl> und r, und geben Sie anschließend die Adresse eines Registers ein.

Die Darstellung spezieller Tasten

Einige Tasten werden über ihren Namen angezeigt. Die folgende Tabelle zeigt eine Auswahl dieser Tasten:

NotationBedeutung

<Esc>

Drücken Sie die Escape‐Taste.

<CR>

Drücken Sie die Return‐Taste. (Sie wird auch als <Enter>- oder <Eingabe>-Taste bezeichnet.)

<Ctrl>

Drücken Sie die Control‐Taste.

<Tab>

Drücken Sie die Tab- oder Tabulator‐Taste.

<Shift>

Drücken Sie die Shift- oder Hochstelltaste.

<S-Tab>

Drücken Sie gleichzeitig die Tasten <Shift> und <Tab>.

<Hoch>

Drücken Sie die Pfeil‐nach-oben‐Taste.

<Runter>

Drücken Sie die Pfeil‐nach-unten‐Taste.

Drücken Sie die Leertaste.

Beachten Sie, dass die Leertaste durch das Zeichen ␣ dargestellt wird. Es könnte beispielsweise mit f{Zeichen} kombiniert werden und f␣ bilden.

Während der Befehlseingabe den Modus wechseln

Bei der Arbeit mit Vim wechselt man häufig vom normalen Modus in den Einfügemodus und wieder zurück. Jede Tastenbetätigung kann eine andere Bedeutung haben, je nachdem, welcher Modus gerade aktiv ist. Ich habe eine andere Darstellung für Tastenbetätigungen gewählt, die im Einfügemodus erfolgen. Das macht es leichter, sie von den Tastenbetätigungen im normalen Modus zu unterscheiden.

Betrachten Sie das folgende Beispiel: cwErsetzung<Esc>. Der cw-Befehl des normalen Modus löscht das aktuelle Wort und wechselt in den Einfügemodus. Dann geben wir im Einfügemodus das Wort »Ersetzung« ein und drücken <Esc>, um wieder in den normalen Modus zurückzuwechseln.

Die Darstellungsweise für den normalen Modus wird auch für Tastenbetätigungen im visuellen Modus genutzt, während die Darstellungsweise für den Einfügemodus auch für Tastenbetätigungen im Kommandozeilenmodus und im Ersetzenmodus verwendet wird. Welcher Modus gerade aktiv ist, sollte aus dem Kontext klar werden.

Mit der Kommandozeile interagieren

In einigen Tipps werden wir Kommandozeilen ausführen, entweder in der Shell oder in Vim. Folgendermaßen sieht es aus, wenn wir den Befehl grep in der Shell ausführen:

$ grep -n Waldo *

Und so sieht es aus, wenn wir den eingebauten :grep-Befehl von Vim nutzen:

:grep Waldo *

In Vim in der Praxis zeigt das $-Zeichen an, dass ein Befehl in einer externen Shell ausgeführt wird, während das Eingabeaufforderungszeichen : anzeigt, dass die Kommandozeile intern im Kommandozeilenmodus ausgeführt wird. Gelegentlich werden uns andere Eingabeaufforderungen begegnen, unter anderem die folgenden:

EingabeaufforderungBedeutung

$

Geben Sie die Kommandozeile in einer externen Shell ein.

:

Nutzen Sie den Kommandozeilenmodus, um einen Ex-Befehl auszuführen.

/

Nutzen Sie den Kommandozeilenmodus, um eine Suche vorwärts durchzuführen.

?

Nutzen Sie den Kommandozeilenmodus, um eine Suche rückwärts auszuführen.

Nutzen Sie den Kommandozeilenmodus, um einen Vim‐Script-Ausdruck auszuwerten.

Jedes Mal, wenn Sie in einer Zeile einen Ex-Befehl wie :write sehen, können Sie voraussetzen, dass die <CR>-Taste gedrückt wird, um den Befehl auszuführen. Andernfalls geschieht nichts. Sie können das <CR> also als impliziert betrachten.

Im Gegensatz dazu ermöglicht uns Vims Suchbefehl, den ersten Treffer vorab einzusehen, bevor wir <CR> betätigen (siehe „Vorschau des ersten Treffers vor der Ausführung“). Wenn Sie in einer Zeile einen Suchbefehl wie /Muster<CR> sehen, wird die <CR>-Betätigung explizit aufgeführt. Wenn das <CR> weggelassen wird, ist das beabsichtigt. Es bedeutet in der Regel, dass Sie die Enter‐Taste noch nicht betätigen sollen.

Die Cursorposition in einem Puffer anzeigen

Wenn der Inhalt eines Puffers dargestellt wird, ist es praktisch, wenn die Position markiert werden kann, an der sich der Cursor befindet. Im folgenden Beispiel sollten Sie sehen, dass sich der Cursor auf dem ersten Zeichen des Wortes »Eins« befindet:

Eins zwei drei

Wenn wir eine Änderung vornehmen, die mehrere Schritte umfasst, durchläuft der Inhalt des Puffers einige Zwischenstände. Zur Illustration dieses Prozesses nutze ich eine Tabelle, in der in der linken Spalte die ausgeführten Befehle angezeigt werden und in der rechten der Inhalt des Puffers. Hier ist ein einfaches Beispiel:

TastenaktionenPufferinhalt

{Ausgangszustand}

Eins zwei drei

dw

zwei drei

In Zeile 2 haben wir den Befehl dw ausgeführt, um das Wort unter dem Cursor zu löschen. Wir können uns ansehen, wie der Puffer unmittelbar nach der Ausführung dieses Befehls aussieht, indem wir uns den Inhalt des Puffers in der gleichen Zeile ansehen.

Suchtreffer hervorheben

Bei der Illustration von Vims Suchbefehl ist es nützlich, alle Treffer hervorzuheben, die es in einem Puffer gibt. Im folgenden Beispiel führt eine »Suche« nach der Zeichenfolge »die« dazu, dass alle Vorkommen des Musters hervorgehoben werden:

TastenaktionenPufferinhalt

{Ausgangszustand}

die Probleme mit diesen neuen Rekruten sind, dass sie diese Anweisungen nicht umsetzen und diesem Befehl nicht folgen.

/die<CR>

die Probleme mit diesen neuen Rekruten sind, dass sie diese Anweisungen nicht umsetzen und diesem Befehl nicht folgen.

Wie Sie in Vim die Hervorhebung von Suchtreffern aktivieren, erfahren Sie, wenn Sie zu „Suchtreffer hervorheben“ vorblättern.

Text im visuellen Modus auswählen

Im visuellen Modus können wir Text im Puffer auswählen und dann mit der Auswahl arbeiten. In diesem Beispiel nutzen wir das Textobjekt it, um den Inhalt des <a>-Tags auszuwählen:

TastenaktionenPufferinhalt

{Ausgangszustand}

<a href="http://pragprog.com/dnvim/">Vim in der Praxis</a>

vit

<a href="http://pragprog.com/dnvim/">Vim in der Praxis</a>

Beachten Sie, dass die Darstellung für die visuelle Auswahl der Darstellung von Suchtreffern entspricht. Wenn Sie diesen Stil sehen, sollte aus dem Kontext klar werden, ob er einen Suchtreffer oder eine visuelle Auswahl repräsentiert.

Die Beispiele herunterladen

Bei der Vorstellung der Beispiele zeige ich Ihnen in Vim in der Praxis in der Regel zuerst den Inhalt der Datei, bevor wir sie ändern. Diese Codedarstellungen enthalten den Dateipfad:

macros/incremental.txt Rebhuhn im Birnbaum Turteltauben Gallischer Hahn Vogelrufe goldene Ringe

Jedes Mal, wenn Sie eine Datei sehen, zu der auf diese Weise ein Dateipfad angegeben wird, heißt das, dass Sie das Beispiel herunterladen können. Ich empfehle Ihnen, die Datei in Vim zu öffnen und die Übungen selbst nachzuvollziehen. Das ist der beste Weg, um die Arbeit mit Vim zu lernen!

Laden Sie dazu alle Beispiele und den Quellcode von der Webseite zum Buch herunter.[2] Wenn Sie das Buch auf einem elektronischen Gerät lesen, das mit dem Internet verbunden ist, können Sie auch probieren, die Beispiele einzeln herunterzuladen, indem Sie auf den Dateinamen klicken. Probieren Sie das mit dem Beispiel oben.

Vims Voreinstellungen nutzen

Vim ist hochgradig konfigurierbar. Wenn Ihnen die Standardeinstellungen nicht gefallen, können Sie diese ändern. Das ist zwar eine gute Sache, könnte allerdings zu Irritationen führen, wenn Sie die Beispiele in diesem Buch mit einer angepassten Vim‐Version nachvollziehen. Sie könnten feststellen, dass einige Dinge bei Ihnen nicht auf die gleiche Weise funktionieren, wie sie im Text beschrieben werden. Wenn Sie den Eindruck haben, dass Ihre Anpassungen für die Störungen verantwortlich sind, können Sie das folgendermaßen überprüfen. Beenden Sie Vim, und starten Sie ihn dann mit den folgenden Optionen neu:

$ vim -u NONE -N

Das Flag -u NONE sagt Vim, dass er beim Start nicht Ihre vimrc laden soll. Das sorgt dafür, dass Ihre Anpassungen nicht angewendet werden und das dass Plugins deaktiviert werden. Wenn Vim beim Start keine vimrc-Datei lädt, fällt er in den vi-Kompatibilitätsmodus zurück. Das bewirkt, dass viele nützliche Features deaktiviert werden. Das Flag -N verhindert das, indem es die Option nocompatible setzt.

Bei den meisten Beispielen in Vim in der Praxis sollte der vim -u NONE -N-Trick garantieren, dass Sie genau das sehen, was Ihnen beschrieben wird. Es gibt allerdings einige Ausnahmen. Einige von Vims eingebauten Features sind mit Vim‐Script implementiert. Das bedeutet, dass sie nur funktionieren, wenn Plugins aktiviert sind. Die folgende Datei enthält die absolute Minimalkonfiguration, die erforderlich ist, um die eingebauten Plugins von Vim zu aktivieren:

essential.vimset nocompatible filetype plugin on

Wenn Sie Vim starten, können Sie diese Datei anstelle Ihrer eigenen vimrc nutzen, indem Sie den folgenden Befehl ausführen:

$ vim -u code/essential.vim

Sie müssen den Pfad code/essential.vim entsprechend anpassen. Wenn die eingebauten Plugins von Vim aktiviert sind, können Sie Einrichtungen wie netrw („Das Dateisystem mit netrw erforschen“), die Omni‐Vervollständigung („Autovervollständigung mit Kontextbewusstsein“) und viele andere nutzen. Für mich heißen Voreinstellungen bei Vim, dass die eingebauten Plugins aktiviert sind und die vi-Kompatibilität abgeschaltet ist.

Achten Sie auf Unterabschnitte mit der Überschrift »Vorbereitung«, die Sie zu Beginn einiger Tipps finden. Wenn Sie den Inhalt dieser Tipps nacharbeiten wollen, müssen Sie Vim entsprechend konfigurieren. Wenn Sie Vim mit den Voreinstellungen starten und dann im laufenden Betrieb die angegebenen Anpassungen anwenden, sollten Sie die Schritte in diesen Tipps ohne Probleme nachvollziehen können.

Wenn Sie immer noch Probleme haben sollten, werfen Sie einen Blick in „Die Vim-Versionen“.

Die Rolle von Vim-Script

Mit Vim‐Script können wir Vim neue Funktionalitäten hinzufügen oder vorhandene Funktionalitäten ändern. Es ist eine vollständige und abgeschlossene Script‐Sprache und damit ein Thema, das ein eigenes Buch wert wäre. Vim in der Praxis ist nicht jenes Buch.

Wir werden das Thema nicht vollständig umschiffen. Vim‐Script wartet stets im Hintergrund, stets bereit, Ihren Anweisungen Folge zu leisten. Wir werden einige Beispiele dafür sehen, wie es in alltäglichen Aufgaben eingesetzt werden kann (siehe „Kleine Berechnungen vor Ort durchführen“, „Einen Iterator auswerten, um die Elemente in einer Liste zu nummerieren“, „Auf der Ersetzung Berechnungen durchführen“ und „Zwei oder mehr Wörter austauschen“).

Vim in der Praxis zeigt Ihnen, wie Sie die Aufgaben, die Sie zu erledigen haben, mit den Basis-Features von Vim bewältigen. Anders formuliert: Es werden keine externen Plugins vorausgesetzt. Ich habe Ausnahmen für „Nach der aktuellen visuellen Auswahl suchen“ und „Suchen und Ersetzen über mehrere Dateien“ gemacht. Diese beiden von mir empfohlenen Plugins ergänzen Funktionen, die ich unverzichtbar finde. Und in beiden Fällen erfordern die Plugins nur sehr wenig Code – weniger als zehn Zeilen Vim‐Script. Beide Beispiele zeigen, wie leicht die Funktionalität von Vim erweitert werden kann. Die Implementierung von visual-star.vim und Qargs.vim wird inline ohne weitere Erläuterungen präsentiert. Das sollte Ihnen eine Vorstellung davon geben, wie Vim‐Script aussieht und was Sie mit ihm erreichen können. Wenn das Ihr Interesse weckt, umso besser.

Die Vim-Versionen

Alle Beispiele in Vim in der Praxis wurden mit der letzten Version von Vim getestet. Das war, als dies geschrieben wurde, Version 7.3. Die meisten Beispiele sollten mit allen Versionen der 7.x-Reihe funktionieren, viele der behandelten Features sind auch in 6.x verfügbar.

Einige der Features von Vim können bei der Kompilierung abgeschaltet werden. Wenn Sie einen Build konfigurieren, könnten Sie beispielsweise die Option --with-features=tiny angeben, die alles außer den grundlegendsten Features deaktiviert. (Es gibt auch Funktionsmengen mit den Namen small, normal, big und huge.) Die Liste der verfügbaren Features können Sie sich unter :h +feature-list ansehen.

Wenn Sie den Eindruck haben, dass bei Ihnen ein Feature fehlt, das in diesem Buch behandelt wird, kann es sein, dass Sie eine weniger vollständige Version von Vim nutzen. Welche Features bei Ihnen verfügbar sind, können Sie mit dem Befehl :version prüfen:

:versionVIM - Vi IMproved 7.3 (2010 Aug 15, compiled Sep 18 2011 16:00:17) Huge version with MacVim GUI. Features included (+) or not (-): +arabic +autocmd +balloon_eval +browse +builtin_terms +byte_offset +cindent +clientserver +clipboard +cmdline_compl +cmdline_hist +cmdline_info +comments ...

Auf einem modernen Rechner gibt es keinen Grund dafür, Vim in einer anderen Form als mit der Funktionsmenge huge (was »gewaltig« bedeutet) einzusetzen!

Vim im Terminal oder Vim mit GUI? Ihre Entscheidung!

Traditionell läuft Vim im Terminal und bietet keine grafische Benutzerschnittstelle (GUI). Man könnte sagen, dass Vim stattdessen ein TUI hat: eine textbasierte Benutzerschnittstelle. Wenn Sie die meiste Zeit Ihres Tages auf der Kommandozeile verbringen, wird das für Sie vollkommen natürlich sein.

Wenn Sie hingegen an einen GUI‐basierten Texteditor gewöhnt sind, kann GVim (oder auf OS X MacVim) Ihnen eine hilfreiche Brücke in die Vim‐Welt schlagen (siehe :h gui). GVim unterstützt mehr Schriften und mehr Farben für die Syntaxhervorhebung. Außerdem können Sie die Maus nutzen. Und es werden einige der Konventionen des Betriebssystems berücksichtigt. Beispielsweise können Sie in MacVim mit Cmd-X und Cmd-V mit der Zwischenablage interagieren, mit Cmd-S ein Dokument speichern oder mit Cmd-W ein Fenster schließen. Nutzen Sie diese Möglichkeit, während Sie sich in Vim einarbeiten. Doch Sie sollten sich bewusst sein, dass es immer eine bessere Möglichkeit gibt.

Für die Dinge, die in diesem Buch behandelt werden, spielt es keine Rolle, ob Sie Vim im Terminal ausführen oder ob Sie GVim nutzen. Wir konzentrieren uns auf elementare Befehle, die in beiden gleichermaßen funktionieren. Wir werden lernen, wie man Dinge auf dem Vim-Weg erledigt.

[2] http://examples.oreilly.de/german_examples/practicalvimger/

Kapitel 5. Der Vim-Weg

Unsere Arbeit ist von Natur aus repetitiv. Ganz gleich, ob wir die gleiche kleine Änderung an verschiedenen Stellen vornehmen oder ob wir uns zwischen ähnlichen Bereichen eines Dokuments bewegen – wir wiederholen viele Aktionen. Alles, was einen wiederholungslastigen Arbeitsablauf erleichtern kann, wird uns die Zeit vielfach wieder einspielen.

Vim ist für Wiederholungen optimiert. Seine Effizienz basiert darauf, wie er die von uns zuletzt ausgeführten Aktionen festhält. Die letzte Änderung können wir jederzeit mit einer einzigen Tastenaktion erneut durchführen lassen. So mächtig das auch klingt – es ist nutzlos, wenn wir nicht lernen, unsere Aktionen so zu gestalten, dass sie, wenn sie erneut abgerufen werden, eine sinnvolle Arbeitseinheit darstellen. Dieses Konzept zu beherrschen ist der Schlüssel für eine effektive Arbeit mit Vim.

Der Punktbefehl ist unser Ausgangspunkt. Dieser scheinbar so einfache Befehl ist das vielseitigste Werkzeug in unserem Werkzeugkasten. Dass man ihn versteht, ist der erste Schritt zur Vim‐Meisterschaft. Wir werden eine Handvoll einfacher Textbearbeitungsaufgaben durchgehen, die mit dem Punktbefehl sehr rasch durchgeführt werden können. Obgleich alle Aufgaben ganz unterschiedlich aussehen, sind die Lösungen fast immer ähnlich. Wir werden eine optimale Bearbeitungsformel suchen, die nur eine einzige Tastenaktion zur Navigation und zur nächsten Ausführung verlangt.

5.1. Der Punktbefehl

Mit dem Punktbefehl können wir die letzte Änderung wiederholen. Das ist der mächtigste und vielseitigste Befehl in Vim.

Die Vim‐Dokumentation sagt ganz lapidar, dass der Punktbefehl »die letzte Änderung wiederholt« (siehe :h.). Das klingt nicht sonderlich eindrucksvoll und doch finden wir in dieser einfachen Definition den Kern dessen, was das modale Textbearbeitungsmodell von Vim so effektiv macht. Zunächst müssen wir uns klarmachen, was eine Änderung ist.

Wenn wir die Macht des Punktbefehls verstehen wollen, müssen wir uns vor Augen führen, dass die »letzte Änderung« vieles sein könnte. Änderungen könnten auf Basis einzelner Zeichen, ganzer Zeilen oder gar vollständiger Dateien registriert werden.

Zu Illustration werden wir das folgende Textfragment nutzen:

the_vim_way/0_mechanics.txt Zeile eins Zeile zwei Zeile drei Zeile vier

Der Befehl x löscht das Zeichen unter dem Cursor. Wenn wir den Punktbefehl in diesem Kontext nutzen, weist »letzte Veränderung wiederholen« Vim an, das Zeichen unter dem Cursor zu löschen:

TastenaktionenPufferinhalt

{Ausgangszustand}

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!

Lesen Sie weiter in der vollständigen Ausgabe!