Warum Vim so geil ist!

with 1 Kommentar

Aufregender Titel, nicht? Ich habe diese Seite jetzt schon einige Zeit lang, aber habe mich hier um das Blog überhaupt nicht gekümmert. Ich konnte schon damals im Deutschunterricht nicht überzeugen, aber jetzt habe ich mich doch endlich entschieden, hier einen Artikel zu verfassen.

Ich gehe mal davon aus, das die Leute, die den Artikel hier lesen, wissen was Vim ist. Dennoch will ich es noch mal kurz zusammenfassen. Vim ist im groben ein Text-Editor, für manche sogar eine IDE (Integrated Development Enviroment). Vim kommt ohne große GUI (Graphical User Interface) aus, also man kann sehr viele Dinge über Tastenkombinationen machen. Viele, die mit TextMate 2, Notepad++, oder Eclipse bereits programmiert haben, können sich das nur schwer vorstellen, man kennt ja die alten bekannten Tastenkombinationen Ctrl+s, Ctrl+a, etc. Aber Vim geht weiter.

Der Editor wird in einem Terminal gestartet und erkennt automatisch ob es sich um eine Programmiersprache handelt, welche dann farblich hervorgehoben wird.

Vim („vi improved“) wird sehr oft bei Linux verwendet, da dort noch sehr viel in der Shell gearbeitet wird, jedoch läuft Vim auch auf Windows und MacOS, es gibt beispielsweise GVim (mit graphischer Oberfläche) und MacVim. Viele andere Betriebssysteme werden zusätzlich unterstützt.

Okay, jetzt wissen wir, dass Vim ein Editor ist, der so gut wie überall läuft und über Tastenkombinationen gesteuert wird. Zusätzlich ist es Open Source, man wird aber ermutigt für Waisenkinder in Uganda zu spenden. Was macht den Texteditor denn jetzt so besonders, dass man einen Artikel darüber schreiben würde.

Vim ist zu einer Art Statussymbol geworden, ein Program, mit dem man sich identifiziert, wie es beispielsweise ein Betriebssystem (Windows vs. MacOS vs. Linux) (Android vs. iOS), oder ein Browser. Man ist stolz diesem System anzugehören und wird zu einer Art Jünger für dieses. Das selbe findet auch zwischen Emacs und Vim statt.

Emacs ist ein Editor, der verdammt mächtig ist, manch einer bezeichnet ihn sogar als eigenes Betriebssystem, nicht verwunderlich, wenn man bedenkt, dass man darin Tetris spielen kann und auch ein Browser installiert werden kann, chatten soll wohl auch möglich sein. So ist auch der Witz entstanden, dass Emacs ein klasse Betriebssystem ist, dem es nur an einem guten Editor mangelt.
Vim hingegen ist beinahe winzig, erst kürzlich wurde die Größe einer Floppy Disk mit 1.44MB überschritten, ist dafür aber in der Grundausführung sehr mächtig. Jedoch ist die Handhabung des Editors von einer entsprechend langen Einarbeitungszeit geprägt und die für Einsteiger unübliche Benutzung des Programmes hat auch schon den ein oder anderen Witz hervorgebracht. So ist das beenden von Vim so atypisch, dass es heißt, um eine lange Kette zufälliger Zeichen zu generieren, muss man einem Neuling nur darum bitten Vim zu beenden (Dies geschieht übrigens über den Befehl :q)
Das soll hier aber kein Vergleich sein, welcher Editor besser ist, ich habe mich damals für Vim entschieden, da es ein kleiner Editor ist, der schön in der Shell läuft und produktives Arbeiten erlaubt. Und wie das ermöglicht wird, will ich hier vorstellen. Wer Vim lernen möchte, sollte sich im Internet mal umgucken, dort gibt es viele Tutorials und Einführungen, Vim selbst kommt mit einem eigenen Tutor.

Vim kann man sich aus den Paketquellen installieren, sollte es nicht schon installiert sein. Dies kann man sehr einfach testen, indem man in der Konsole/der Shell vim -h eingibt. Dort sollte dann die Versionsnummer angezeigt werden. Ist vim noch nicht installiert kann man es bei Ubuntu beispielsweise über apt-get install vim, bzw. bei Arch Linux über pacman -S vim installieren. Im Anschluss kann man dann über den Befehl vimtutor eine Art Tutorial aufrufen, das einen an die Funktionsweise von Vim gewöhnen soll.

Vim wird über eine .vimrc Datei konfiguriert. Interessant ist, dass man dort unglaublich viele Dinge einstellen kann, sodass einige Leute ihre .vimrc veröffentlicht haben um anderen Nutzern eine Art Einstiegshilfe anzubieten. Je mehr man mit Vim arbeitet, desto mehr wird man diese Datei an seine Bedürfnisse anpassen.
Zudem kann man noch eine Vielzahl an Plugins installieren. So kommen dann Dinge wie ein Dateimanager und Intelli-Sense wie es bei Microsoft heißt, zu Vim. Vim enthält aber von vornherein eine Vielzahl an Funktionen, wie beispielsweise Syntax Highlighting, Macros, Tabbed Editing (man kann also mehrere Dateien in Tabs geöffnet haben) und paralleles bearbeiten durch Spalten des Bildschirms. Auch ist die Suche mächtig, man kann auch mittels regulärer Ausdrücke suchen (also nach der formalen Struktur suchen).

Es gibt mehrere Projekte, die ein Pedal benutzen, um den Insert-Mode in Vim zu verlassen. Dadurch soll vermieden werden, dass man mit den Fingern die Ausgangsposition verlässt um die ESC-Taste zu erreichen.

Interessant wird Vim aber hautpsächlich, weil es den Benutzer dazu führt, die Finger nur noch auf der Tastatur zu halten, selbst ein Wechsel zu den Pfeiltasten ist unnötig, da man über die Tasten h(links), j(runter), k(hoch) und l(rechts) einfach und vor allem sehr schnell navigieren, da dort sowieso schon die Finger sind. Weiterhin kann man schnell im Dokument rumspringen, man kann schnell zum Ende des aktuellen Wortes, zum Anfang des nächsten Wortes und zum Ende der Zeile wechseln. Wenn man dann i (insert – vor dem Cursor) oder a (append – hinter dem Curser) drückt, kommt man in den Eingabemodus, man kann also jetzt Text eingeben. Um diesen wieder zu verlassen und im Dokument rumzuspringen, kann man Esc drücken, aber selbst dafür gibt es andere ausgefallenere Möglichkeiten, wie etwa ein Pedal.

Man merkt also, dass es bei Vim darum geht, die Finger so wenig wie möglich zu bewegen und somit verdammt schnell zu werden. Wenn man eine Zeile löscht, markiert man diese nicht und löscht sie, man geht auch nicht hin und löscht Zeichen für Zeichen, sondern drückt dd und die Zeile ist weg. Und sollte man 5 Zeilen löschen, drückt man d5d, für 10 Zeilen wäre es d10d.

Ich würde jedem vorschlagen, dass er sich Vim mal runterlädt und damit ein bisschen rumskriptet. Man soll darin wohl hervorragend Python programmieren können, was ich bis jetzt auch schon gemerkt habe. Ansonsten wird man Vim wohl begegnen, wenn man mal nur in der Konsole arbeitet, was beispielsweise der Fall ist, wenn man per SSH auf nen Server geht, oder wenn man sich beispielsweise ein Arch Linux aufsetzt, wo ja alles über Textdateien konfiguriert wird.
Selbst wenn man dann meint, dass sich der Lernaufwand nicht lohnt, hat man zumindest mal etwas neues kennen gelernt, denn der Ansatz von Vim ist einfach ganz anders, als man ihn von herkoemmlichen Texteditoren kennt.

Ich habe hier jetzt lediglich einen kleinen Teil angerissen, es gibt mehrere Hundert Befehle, die man sich natürlich nicht auf einmal merken kann, aber es ist ein laufender Prozess und selbst mit ~20 Befehlen kann man schon effektiv arbeiten, richtig Spaß macht es dann aber, wenn man die Feinheiten kennen lernt, dann wird man auch merken, wie viel schneller man mit Vim arbeiten kann, dadurch, dass Griffe zur Maus unnötig werden und alle Kommandos ja schnell mit den Fingern eingegeben werden können. Hier noch einige nützliche Links:

http://en.wikipedia.org/wiki/Editor_war

http://www.tuxfiles.org/linuxhelp/vimcheat.html – Ein Cheat Sheel, mit den wichtigsten Kommandos

http://sontek.net/blog/detail/turning-vim-into-a-modern-python-ide – Mache Vim zu einer IDE für Python-Programmierung

Ich hoffe, dass dieser Artikel als Einstandsartikel ausreicht und ich hier regelmäßig Sachen posten kannn.

  • Mario

    Das mit dem Pedal ist sehr geil :-)