Den Abstand zwischen Gehirn und Quellcode eliminieren und mit Visual Studio Code und dem Vim Plugin zum ultimativen Coding Ninja werden.

Visual Studio Code ist die beliebteste IDE für Softwareentwickler. Zumindest behauptet das stackoverflow.com im Developer Survey 2019.

Ich selbst benutze es sowohl in meiner täglichen Arbeit als auch für private Projekte. Als kostenloses Tool bietet es eine starke Add-on Unterstützung für alle Lebenslagen und integriert sich dadurch wunderbar in die meisten Workflows.

Als DevOps Entwickler kommt man um Linux Server, die nur Kommandozeilenzugriff haben wahrscheinlich nicht herum. Auf der Kommandozeile ist Vim mit Abstand mein Lieblingseditor. Während die meisten kommandozeilenbasierten Texteditoren eher klobig wirken bietet Vim:

  • Motions für extrem schnelle Navigation
  • Operations für Standardaufgaben sowie
  • Macros für komplexe Textbearbeitung

In diesem Tutorial erfährst du, wie du mithilfe des Vim Plugins diese beiden besten Editoren kombinierst und dadurch zum ultimativen Coding Ninja wirst! ;)

Was ist Vim

VI, Vims Vorgänger wurde 1976 ursprünglich als Texteditor für BSD entwickelt. Erst 15 Jahre später hat der gebürtige Niederländer Bram Moolenaar die Ideen von Vi aufgegriffen und Vi IMproved erschaffen. Den Quellcode findest du übrigens auf GitHub.

Vim hat alle Features von Vi übernommen. Deswegen wirst du weitestgehend auch mit Vi zurechtkommen, wenn du Vim gelernt hast. Darüber hinaus kamen allerdings noch einige neue hinzu:

  • Portierung auf alle gängigen Betriebssysteme
  • Syntaxhervorhebung
  • besseres undo/redo
  • Netzwerkprotokolle
  • Bildschirmteilung
  • Ziparchive bearbeiten
  • eigenes Diff-Tool
  • Pluginunterstützung
  • u. v. m.

Lustiger kommt Vim mit seiner eigenen Lizenz daher. Diese ist deckungsgleich mit der bekannten GPLv2 Lizenz. Diese wird unter anderen auch von Linux selbst verwendet. Darüber hinaus ermuntert sie den User, sofern er Spaß an Vim hat, Geld an notleidende Kinder in Uganda zu spenden. Nette Sache!

Wieso du Vim verwenden solltest

Vim ist schnell. In jederlei Hinsicht. Beim Installieren, beim Starten, vor allem aber beim Editieren. Und das obwohl Vim auf eine Maussteuerung verzichtet.

Kleine Kostprobe?

Mal angenommen du hast diese Zeile.

Vorher:

print("Moin Leute was geht?")

Jetzt drückst du diese fünf Zeichen c``i``"``H``i und schwuppdiwupp hast du wie von Zauberhand folgende Zeile.

Nachher:

print("Hi")

Ganz ohne markieren mit der Maus oder langes gedrückt halten der Backspacetaste!

Eingabe Erklärung
ci" Entferne Text zwischen (in) Anführungszeichen und wechselt in den insert mode
Hi Texteingabe

Noch ein Beispiel gefällig?

In folgenden Text sollen nur noch die Zahlen als comma-separated values (CSV) zu sehen sein.

Vorher:

# mache zu CSV #
################
1,8,25,2,123,55,23,0,
131,22,8,768,17,85,12,
199,2,294,63,67,39,1

Dazu brauchst du diese 5 Zeichen.

d``j``g``J``.

Nachher:

1,8,25,2,123,55,23,0,131,22,8,768,17,85,12,199,2,294,63,67,39,1
Eingabe Erklärung
dj Aktuelle und nächste Zeile löschen
gJ Untere Zeile löschen und Inhalt in die aktuelle kopieren
. Letzten Befehl wiederholen

Dieser Beitrag soll kein Vim Tutorial sein. Falls du Vim lernen willst schau mal an das Ende dieses Beitrags. Dort findest du ein paar nützliche Links!

Was sind die Vim Modi

Was macht Vim denn nun besser als andere Editoren? Kurze Antwort: Bedienungsmodi. Was für den Anfänger unintuitiv wirkt ermöglicht dem Profi allen Tasten mehrere Funktionen zu geben. Je nach Modus.

Vim kennt insgesamt 6 Modi. Du musst sie nicht auswendig lernen. Sie werden sich ganz natürlich anfühlen, wenn du Vim eine Weile verwendet hast. Am besten guckst du dir am Anfang nur den normal mode und den insert mode an.

Normal mode

Im normal mode (normaler Modus) - auch command mode (Kommandomodus) bewegst du deinen Cursor durch die Datei. Dies ist wahrscheinlich der meistgenutzte Modus. Der Modus ist per Default beim Start geöffnet. Ansonsten kommst du immer mit {ESC} rein wenn, du gerade in einem anderen Modus bist.

Visual mode

Mit dem visual mode (visueller Modus) kannst du Text markieren. Ungefähr so wie der Betriebssystemübergreifende Shift + Pfeiltasten Standard. Allerdings viel besser: Du kannst auf die volle Bandbreite der Vim Motions zugreifen anstatt nur auf die Pfeiltasten.

Select mode

Der select mode (Auswahlmodus) ist vergleichbar mit dem visual mode. Allerdings verhält er sich beim Markieren eher wie „herkömmliche” Editoren. Ehrlich gesagt benutzt niemand diesen Modus. Vergiss ihn einfach wieder. ;)

Insert mode

Anders der insert mode. Hier wirst du sehr viel unterwegs sein. Nur in diesem Modus haben deine Tastenanschläge den Effekt den man von Editoren erwartet: Sie schreiben einen Buchstaben in die Datei.

Command Line mode

Der command line mode (Kommandozeilenmodus) ist sozusagen das Hauptmenü des Editors. Hier kannst du das Programm beenden, andere Dateien öffnen, suchen & ersetzen und vieles mehr.

Fun Fact: Die Stack Overflow Seite mit der Frage wie man Vim beendet wurde mittlerweile 2,3 Millionen mal aufgerufen. Sie ist damit unter den 100 meistbesuchten Fragen der Webseite!

Ex mode

Den ex mode (Ex Modus) musst du dir als Anfänger nicht unbedingt sofort angucken. Dieser Modus ist eher für (automatisierte) Batchverarbeitung gedacht. Anders gesagt damit lassen sich mehrere Kommandos hintereinander ausführen. Er wird üblicherweise von der Kommandozeile bzw. Bash aus verwendet und nicht unbedingt in Vim sebst. Deswegen verzichtet dieser Modus auch auf eine grafische Darstellung.

Das Vim Addon für VS Code

Jetzt wo du weißt, dass Vim gut ist stellt sich nur noch die Frage wie du es in Visual Studio Code benutzt. Dazu installierst du dir einfach die Visual Studio Extension. Das geht über das Extensions-Menü: STRG+Shift+x –> Vim –> Install.

Dadurch werden quasi alle Code Fenster in VS Code zu Vim Fenstern. Jetzt kannst du sofort mit deinen Vim Befehlen starten!

Konfiguration

Du solltest beachten, dass Vim für die Yank (Kopieren) Funktion seinen eigenen Zwischenspeicher verwendet. Deswegen musst du den Zugriff auf den Betriebssystemzwischenspeicher konfigurieren, wenn du ihn verwenden willst. Alternativ kannst du natürlich auch mit dem “+ Register darauf zugreifen. Allerdings nur in eine Richtung. Es ist keine Defaulteinstellung aber durchaus nützlich!

Die Einstellungen von Visual Studio Code öffnest du über die Command Palette mit F1 (oder STRG + Shift + P) und tippst dort Open Settings (JSON) ein.

Den betriebssystemweiten Zwischenspeicher aktivierst du, indem du hinter der öffnenden Klammer diese Zeile hinzufügst.

    "vim.useSystemClipboard": true,

Spezielle VS Code Vim Tipps

Um den maximalen Geschwindigkeitsvorteil zu haben solltest du die Maus möglichst selten anfassen. Schau dir am besten möglichst viele VS Code Hotkeys an. Das Terminal kannst du zum Beispiel mit STRG + ``` öffnen und schließen. Zwischen den Textfenstern wechselst du mit STRG + 1 bzw. STRG + 2

Auch wenn das Plugin versucht Vim möglichst originalgetreu abzubilden, gibt es ein paar Features in VS Code, die auch nützlich sind. Diese werden über spezielle Befehle die es im richtigen Vim eigentlich nicht gibt nutzbar gemacht. Die besten davon will ich dir nicht vorenthalten.

Eingabe Erklärung
gd Öffnet einen neuen Tab mit der Definition (Funktionsdefinition, Klassendefinition, Variablendeklarierung etc.) des Worts unter dem Cursor. Mit Python funktioniert das einwandfrei. Allerdings benötigst du dafür natürlich das Python Plugin.
gq Formatiert den markierten Text, sodass er maximal 80 Zeichen pro Zeile misst.
gb Fügt einen weiteren Cursor (Multi-Cursor) bei einer Stelle hinzu die mit der aktuell markierten Stelle identisch ist. Dies ist äquivalent zu STRG + D im normalen VS Code.
af Im visual mode markiert dieser Befehl einen Textblock. Als Textblock wird der Text zwischen Zeichen wie (), [], {}, ````, "" und '' erkannt. Kann wiederholt werden, um den nächst größeren Block zu markieren.
gh Zeigt die Hilfe zu dem Wort unter dem Cursor an. Hat denselben Effekt wie mit der Maus über das Wort zu fahren. Mit dem Python Plugin werden hier zum Beispiel der Variablentyp einer Variable oder der Docstring für eine Funktion oder ein Modul angezeigt.

Wo du Vim lernen kannst

Wenn du Blut geleckt hast habe ich jetzt noch zu guter Letzt ein paar nützliche Links für dich:

Ach und ein letzter Tipp: Für das Programmieren generell, und auch speziell für Vim ist es sinnvoll die Tastatur auf das amerikanische Layout umstellen. Gerade bei den vielen Sonderzeichen hilft dies ungemein!

Geht hin und bewährt euch als Codeninjas!


Konnte ich helfen? Ich freue mich über einen Drink! 💙