neovim Teil 2 – Bedienung von Vim und nvim für Einsteiger

Auffrischung und Anleitung für Neu- und Wiedereinsteiger

Im ersten Teil haben wir neovim installiert. Nun kann es sein, dass Du entweder vivim oder neovimnoch gar nicht verwendet hast und es zum ersten mal diese Art von Editor richtig testen willst oder vielleicht ist die letzte Verwendung etwas her. Für Dich habe ich diesen Beitrag erstellt.

Vielleicht ist aber auch für den einen oder anderen noch was dabei.

Starten des Editors

Mit vi wird auf fast allen Systemen inzwischen direkt vim gestartet. Neovim wird über nvimaufgerufen. Standardmäßig sind alle diese Editoren für die Command Line gedacht. Also werden auf dem Mac im Terminal, iTerm2 und co gestartet.

Natürlich kannst Du zum öffnen einer Datei diese beim Start des Editors mit angeben.

Auf dem: Mac gibt es MacVim als GUI-Version des “klassischen” VIM und inzwischen vimr für eine GUI-Variante von neovim. Letzten werde ich demnächst noch genauer vorstellen.

Standardmäßig begrüßt Dich der Editor wir im Screenshot und Du befindest Dich im Modus Normal.

So sieht neovim nach einen ersten Start aus.
So sieht neovim nach einen ersten Start aus.

normal, insert, command?

ModusBeschreibung
normalFür Navigation und Manipulation von Texten. In den Modus kommt mit mit Drücken der ESC-Taste
insertDer eigentliche Modus zum schreiben von Texten. Du kommst u.a. mit i in diesen Modus
visualHier wird ein Bereich markiert, um innerhalb diesen Bereichs etwas durchzuführen
commandDie Command Line des Editors. Aus dem Normal-Modus mit : zu erreichen
Ex-ModeEigentlich für Batch-Verarbeitung und der Ursprung von vi

So sieht das dann in der Praxis aus:

Bei den Videos nicht wundern, wenn es etwas anders aussieht als bei Dir. Mein Editor hat rund 300 Zeilen Konfiguration. Auch ist Autovervollständigung aktiv, deshalb werden machen Wörter beim tippen in der kleinen Box neben dem Cursor angezeigt.

Mit ESC kommst Du also immer wieder in den Normal-Mode zurück. Dort kannst Du Dich lesend im Text bewegen und Befehle für den Text eingeben. Typisches Beispiel für einen solchen Befehl wäre dd um eine Zeile zu löschen. Im Insert-Mode schreibst Du dann den Text.

Das hört sich nun kompliziert an, ist aber nach einiger Zeit komplett logisch und macht man im Unterbewusstsein.

Die wichtigsten Befehle im command mode

Da eines der ersten Probleme das Beenden des Editors ist, fangen wir mal mit dem command mode an.

Im Command-Modus (mit : aus dem Normal-Modus), kann man dann “richtige” Befehle eingeben. Beispiel wären hier, speichern, öffnen, das Beenden des Editors, usw.

Ich schreibe immer einen Doppelpunkt vor den Befehl, damit klar ist, dass es er im Command-Mode eingegeben wird.

Alle Befehle und Möglichkeiten würden absolut den Rahmen hier sprengen. Es sind die wichtigsten, um überhaupt vi, vim und neovim bedienen zu können.

Hilfe?

Bevor ich loslege. Schaue Dir auf jeden Fall den Befehl :help an. VIM hat eine sehr umfangreiche Hilfe. Wenn mal ein Fenster, wie bei der Hilfe aufgeht oder einen Teil des Bildschirms benötigt, kommst Du mit :q meistens raus.

Öffnen, speichern und beenden

BefehlWas passiert?
:qBeendet den Editor. Sollte etwas nicht gespeichert sein, kannst Du in nicht beenden
:q!Beendet den Editor, auch wenn noch etwas nicht gespeichert ist (Datenverlust)
:wSpeichert, aber beendet nicht. Mit :w Dateiname kannst Du entsprechend einen Namen zum speichern angeben
:w! dateinameSpeichert (und überschreibt auch falls es die Datei schon gibt), aber beendet nicht.
:wqSpeichern und beenden. Ja ja, die coolen Leute drücken ZZ im normal mode.
:wqaSpeichern und beendet auch alle Tabs. Eher für später interessant, da Du erst mal Tabs lernen musst.
:e dateinameÖffnet eine Datei in einem weiteren Buffer. Ein Buffer ist eine Art weitere Layer im Editor.

Ein paar Beispiele für obere Befehle:

Suchen und Ersetzen

Gesucht wird über den normal mode und somit findest Du den Befehl etwas weiter unten im Beitrag.

BefehlWas passiert?
:%s/suchbegriff/ersatzbegriff/gSucht nach suchbegriff und ersetzt dies durch ersatzbegriff im aktuellen Dokument
:%s/suchbegriff/ersatzbegriff/gcWie zuvor, aber man wird gefragt, ob es ersetzt werden soll
:%s/suchbegriff/ersatzbegriffOhne dem /g wird nur das nächste passende Wort gesucht und ersetzt
:s/suchbegriff/ersatzbegriff/gSuchen und Ersetzen nur in der aktuellen Zeile und auch hier ohne /g nur das nächste Wort
:set ignorecaseSuche nicht Case-Sensitive. Befehl wirkt nur in der aktuellen Session
:set smartcaseZusatz zu ignorecase. Aber wenn ich Groß-/Kleinschreibung verwende dann diese beachten

Hinweis: Damit die Set-Befehle permanent funktionieren, müssen diese in die Config von VIM/Neovim eingetragen werden. Das ist dann einer der nächsten Beiträge von mir.

Hier mal ein Beispiel für die Suche. In diesem Fall war ignorecase und smartcase aktiv:

Buffer

BefehlWas passiert?
:bnSpingt zum nächsten Buffer. Du kannst mehrere Dateien offen haben in unterschiedlichen Buffern
:bpSpringt zum vorherigen Buffer
:bfSpringt zum ersten Buffer
:blSpringt zum letzten Buffer
:buffersZeigt an, welche Dateien (Buffer) geöffent sind

Das Arbeiten mit Buffers:

Das sieht recht umständlich aus. Du kannst aber Befehle, wie bf und bl auf Tasten legen. Hier ein Beispiel, wie ich 32 Dateien öffne und mich darin etwas bewege:

Es würde auch noch die Möglichkeit geben, Dateien in Tabs oder in Splits zu öffnen. Das würde aber hier wahrscheinlich auch den Rahmen komplett sprengen.

Tastaturbefehle für normal, insert, visual und co.

Bewegen im normal mode

Befehl/TasteWas passiert?
hCursor nach links. Geht natürlich auch mit den Cursor-Tasten
jCursor nach unten
knach oben
lnach rechts
$Springe zum Ende der Zeile
0Springe zum Start der Zeile
^Springe zum ersten Zeichen der Zeile, also nach z.B. Leerzeichen
ggGehe zum Anfang des Dokuments
GSpringe zum Ende des Dokuments
wBewegt den Cursor zum ersten Zeichen des nächsten Worts. Dabei ist auch ein Sonderzeichen ein neues Wort
WÜberspringt auf das nächste Wort nach einem Leerzeichen
bIdentisch zu w, nur rückwärts
BIdentisch zu W, nur rückwärts
eWie w nur ist des nun der letzte Zeichen des Wortes
EWie W nur ist des nun der letzte Zeichen des Wortes
geWie b, nur rückwärts
gEWie B, nur rückwärts
)Springt zum ersten Zeichen des nächsten Satzes
(Springt zum ersten Zeichen des letzten Satzes
}Springt zum nächsten Absatz
{Springt zum vorherigen Absatz
+Begt den Cursor zum ersten Zeichen der nächsten Zeile
Entsprechend den Cursor in die vorherige Zeile
HSpringt mit dem Cursor zu ersten Zeile des sichtbaren Fensters
MGehe mit Cursor in die Zeile die sich in der Mitte des sichtbaren Bereichs befindet
LUnd entsprechend in die letzte Zeile
fxGehe zum nächsten Zeichen x der aktuellen Zeile. f, würde zum nächsten Komma springen
Fxwie fx, nur rückwärts
txIdentisch zu fx, nur ein Zeichen dafür
TxIdentisch zu Fx, nur ein Zeichen danach
%Bewegen den Cursor zur nächsten Klammer, geschweiften Klammer oder Kommentar, die mit der aktuellen Cursorposition gekoppelt ist
5Springt 5 Zeilen nach unten
5-Springt 5 Zeilen nach oben

Bewegen im normal mode und im insert mode

Befehl/TasteWas passiert?
Cursor-TastenGewohnte Funktion wie in jedem Editor
CTRL+uHalbe Seite nach oben springen
CTRL+dHalbe Seite nach unten springen
CTRL+bGanze Seite nach oben
CTRL+fGanze Seite nach unten

Suche im normal mode

Befehl/TasteWas passiert?
*Sucht nach dem nächsten Wort, welches sich unter dem Cursor befindet
#Das ganze rückwärts
/suchbegriffSuche vorwärts nach dem Wort Suchbegriff. Je nach Einstellung wird Groß-/Kleinschreibung beachtet
?wordDie Suche entsprechend rückwärts
nSpringe zum nächsten Suchbegriff der gefunden wird
NEntsprechend wieder rückwärts

Wie eine Suche in der Praxis aussehen kann:

Wie komme ich vom normal mode in den insert mode

Befehl/TasteWas passiert?
iGeht in den insert mode, um Text zu schreiben
aGeht ein Zeichen weiter in den insert mode
ISpringt zum ersten Zeichen der Zeile und geht in insert mode
AGeht in insert mode bei dem letzten Zeichen der Zeile
oFügt eine Zeile unter der aktuellen Zeile ein und geht in insert mode
OFügt eine Zeile oberhalb der aktuellen Zeile ein und geht in insert mode
cmErsetzte das aktuelle Wort. Löscht das Wort und geht in insert mode
ccLöscht die ganze Zeile und geht in insert mode. Wäre wie ddO.
CEntfernt alles bis zum Ende der Zeile und geht in insert mode
sEntfernt Zeichen unter dem Cursor und geht dann in inset mode.

Löschen (im normal mode)

Befehl/TasteWas passiert?
xLöscht das Zeichen unter dem Cursor. Entspricht Backspace, was auch geht
rTauscht das Zeichen unter dem Cursor aus und bleibt dabei im normal mode. Beispiel ra macht ein a an der Stelle.
dwLöscht das Wort. Du kannst auch dW, db oder eine andere Kombination nehmen.
ddLöscht die ganze Zeile
DLöscht alles ab dem Cursor bis zum Ende der Zeile

Kopieren und Einfügen (im normal mode)

Befehl/TasteWas passiert?
yKopiert den markierten Text (siehe v und V)
yyKopiert die ganze Zeile
ywKopiert das Wort unter dem Cursor. Du merkst die Kombinationen wiederholen sich.
ynwKopiert eine Anzahl n Wörter. 5yy würde 5 Zeilen Kopieren
y$Kopiert bis zum Ende der Zeile
pFügt das kopierte unter dem Cursor ein
PFügt das kopierte vor dem Cursor ein
JFügt die aktuelle mit der nächsten Zeile zusammen

VISUAL MODE

Befehl/TasteWas passiert?
vVisual mode, sozusagen Text markieren
VVisual mode für ganze Zeile
oBewegt Cursor im visual mode zwischen ersten und letzten Zeichen
~Ändert Groß-/Kleinschreibung der Auswahl. Also klein wird groß und umgekehrt
»Ist wie Einrücken mit Tab-Taste. Entweder die Zeile oder alles im visual mode
«In die andere Richtung.

Mit einer kleinen Demo ist der visual Mode wohl verständlicher:

Groß-/Kleinschreibung

Befehl/TasteWas passiert?
g~Ändere Zeichen unterhalb des Cursors. Aus klein macht groß etc.
g~$Bis zum Ende der Zeile alle Zeichen ändern
g~~Aktuelle Zeile
gUUGanze Zeile in Großbuchstaben ändern
guuUnd die ganze Zeile in Kleinbuchstaben wandeln

Undo, Redo, Repeat

Befehl/TasteWas passiert?
uUndo
UAlle Änderungen einer Zeile zurücknehmen
CTRL+RDas Gegenteil von Undo, also Wiederherstellen
.Letzte Änderung oder löschen wiederholen. Zeile löschen und mit . wird nochmals eine Zeile gelöscht
;Wiederholt letztes f, t, F, or T Kommando.
,Wie ; nur in die andere Richtung

Mehr Infos

Ich habe mich bei den VIM Keyboard Shortcuts von tuxfight3r bedient. Dort findest Du dann noch viele weitere Tastenbefehle, die aber diesen Beitrag komplett sprängen würden.

So kannst Du z.B. bei vielen Befehlen durch eine Zahl zuvor den Befehl erweitern. Also 5dd löscht 5 Zeilen 2dw löscht zwei Wörter, usw.

Im nächsten Beitrag kommen wir dann endlich zu einer Config von Neovim. Wir verlassen damit dann die Standard-Einstellung und passen den Editor an unsere Bedürfnisse an.

Similar Posts

2 Comments

  1. Super Beschreibung der wichtigsten Shortcuts und Workflows…gerade für mich als Windows->Mac Umsteiger 🙂

Leave a Reply

Your email address will not be published. Required fields are marked *