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:
- Learn Vim Progressively - Kompaktes Vim Tutorial
- Learn Vim VS Code - Tutorialplugin für VS Code zum Vim lernen
- Vim Adventures - Grafisches Spiel zum Vim lernen (kostet Geld, erste Level sind kostenlos)
- Vim Golf - Kompetetive Vim Rätsel für Fortgeschrittene (benötigt Twitter Account)
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!
💙