Powertool Vim

Vi/Vim: wer mit Linux arbeitet, öffnet früher oder später ein Konfigurationsfile oder ein Script mit dem mächtigen Texteditor. Während die Lernkurve durchaus spürbar ist, dem Editor jedoch sämtlicher Komfort heutiger GUI Applikationen zu fehlen scheinen, wird oft auf einfachere Tools wie “Nano” ausgewichen.

Dabei ist Vim nicht nur sehr viel mächtiger, er kann bei täglichen Aufgaben den Workflow enorm effizienter machen. Und im Gegensatz zu grafischen Editoren, ist er auf jedem Linux Server, und unter anderem auch in vielen Docker Containern, installiert und aufrufbar.

Vim Befehlsmodus

Basics

Ein paar Basics müssen allerdings beherrscht werden, damit mit vim vernünftig gearbeitet werden kann. Dieser Artikel wendet sich insofern auch an erfahrene Vim Benutzer die bereits den Unterschied zwischen Command Mode” und “Insert Mode” kennen. Wem das nichts sagt, dem sei diese online Suse Linux Dokumentation empfohlen.

Die folgenden Befehle führe ich als Reminder und Aufwärmer auf:

iIn den Insert Modus wechseln und Zeichen in der aktuellen Cursorposition ins Dokument einfügen
aGleich wie i, nur wird das Einfügen um eine Position rechts des Cursors gemacht, also angehängt
RDas Zeichen unter dem Cursor wird überschrieben
rSämtliche Zeichen rechts vom Cursor werden ersetzt mit den Eingaben.
ddLöscht die gesamte Zeile
cwErsetzt das gesamte Wort
dwDas Wort unter dem Cursor löschen
yyZeile ins Memory kopieren
4yyDie 4 unter dem Cursor befindlichen Zeilen ins Memory kopieren
pDen kopierten Inhalt "pasten"
$Springe ans Ende der Zeile
^Springe an den Beginn der Zeile
wEin Wort nach vorne springen
:34Springe zu Zeile 34
uUndo

Speichern des Dokuments und Beenden von Vim:

:wSpeichern
:w [File]Speichern in ein neues Dokument “dokument2.txt"
:wqSpeichern und Beenden
:q!Beenden ohne zu speichern

Fortgeschrittene Befehle

:1,$s/Q1/Q2/gErsetze im gesamten Dokument das Wort Q1 mit dem Wort Q2, wenn es auf der gleichen Zeile mehrfach vorkommt, ersetze es mehrfach
:set number
:set nonumer
Zeigt die Linienummern am linken Editor-Rand an. Mit “nonumber” wieder ausschalten
:set cursorlineZeile wird bei Cursorposition mit einer horizontalen Linie angezeigt
:syntax onSyntax-Highlighting wird angezeigt
:set filetype=python
:set filetype=perl
Syntax-Highlighting für die spezifizierte Sprache wird angezeigt.
:r! which bashder Shell Befehl nach ! wird ausgeführt und dessen Output ins Dokument eingefügt. Hier: “/bin/bash”
:edit [File]Das angegeben File wird geöffnet und editiert
:help
:help [Page]
Öffnen der Help Pages
:edit $MYVIMRCEditieren des Vim Konfigurationsfiles ~/.vimrc. Muss vorher angelegt werden!

Vim Default Einstellung anpassen

Mit der Datei ~/.vimrc kann das Verhalten von Vim individuell und nach eigenen Bedürfnissen angepasst werden. Eine einfache .vimrc könnte so aussehen und via Ansible auf allen Servern verteilt werden:

set paste
syntax on
set tabstop=2
set shiftwidth=2
set expandtab
set laststatus=2
set cursorline
set pasteInhalt wird per copy paste eingefüllt ohne die Formatierung zu ändern
syntax onSyntax Highlighting eingeschaltet
set tabstop=2Breite des Tabulators auf 2 Characters
set shiftwidth=2Bei Indentkorrekturen mit den Tasten <<, >>, == wird der Abstand auf 2 Charaketer gesetzt
set expandtabStatt eines Tabulatorzeichens werden Leerzeichen gesetzt
set laststatus=2Setzen der Statusbar
set cursorlineAnzeigen der Cursorlinie

Die obigen Anpassungen bewirken dies:

Erweiterte Funktionen

Window Splitting

Bisweilen hätte man gerne das Fenster gesplittet: eine zweite Datei soll bearbeitet werden, oder die gleiche Datei soll an verschiedenen Stellen verglichen werden. Auf einem entfernten Rechner oder in einem Container muss nicht unbedingt eine zweite Session eröffnet werden. Vim kann seine Anzeige splitten:

:vsplit
:vsplit [File]
Vertikaler Split des Fensters, ohne Dateiangabe gleiche Datei
:split
:split [File]
Horizontaler Split
2 x Ctrl + WWechseln der Dateien
:wallAlle Dateien sichern
:qallAlle Dateien schliessen
:closeSchliessen

Tabs

Auch Tabs gibt es unter Vim. Ist der Platz begrenzt und müssen mehrere Dateien gleichzeitig bearbeitet werden, bieten sich Tabs an:

:tabedit [File] Öffnet die Datei in einem neuen Tab
[Esc] gtSwitch zwischen den Tabs

vimdiff

Selbst eine Vergleichsfunktion bietet Vim. Mit folgendem Befehl können Dateien verglichen werden:

vimdiff file1 file2

Dabei werden nur die relevanten Zeilen angezeigt, also die von der Differenz betroffene und der Übersicht zuliebe ein paar Zeilen darüber und ein paar darunter.

Terminal

Mit :ter kann auch ein Terminal als split Screen geöffnet werden. Manchmal ganz nett, wenn man mit vim beispielsweise das System dokumentiert.

Fazit

Natürlich bietet Vim noch weit mehr Funktionen. Da wäre zum Beispiel Vim-Script, oder die vielen Plugins die man herunterladen und installieren kann. Ich persönlich nutze Vim aber eigentlich “nur” wenn ich auf Server und Container zugreifen muss. “Nur” in Anführungszeichen, weil das zum Tagesgeschäft eines Linux-Admins gehört. Jedoch sind gerade die Funktionen, welche ich oben aufgeführt habe, das von mir am meisten benutzte Werkzeug, wenn ich Dateien im Terminal analysieren, vergleichen und verändern muss.

Schreibe einen Kommentar