Eine IDE installieren und nutzen kann jeder, aber vim als IDE nutzen? Ich zeige ein paar Einstellungen, Shortcuts und Funktionen von vim, die es zu einer IDE machen. Dabei werde ich keine Plugins und keine Magie nutzen, denn vim kann bereits alles nötige.
Das sind die Funktionen, die ich zeige und um die ich die Standard Konfiguration erweitern werde:
- Bedienung, die vim schon kann:
- Standard zeug: Öffnen, speichern, schließen, …
- Dateiexplorer
- Tabs öffnen und nutzen
- Bildschirm teilen
- Navigation, die vim schon kann:
- Suchen, ersetzen,
- Springen (z.B. zum nächsten Vorkommnis, zur Definition, …)
- Software bauen (build & run)
- Debugging
- Mit Anpassungen an vim:
- Zeilennummern, Syntax highlighting, Cursor-Zeile hervorheben, …
- Autovervollständigung mit drop-down Menü
Mehr Anpassungen sind das auch nicht.
Grundlegende Bedienung von vim
Das mit dem Modi sollte man schon drauf haben. Hier auch nur ganz kurz das Wichtigste:
- Datei öffnen (ohne Tabs):
:e /path/to/file
- Datei speichern:
:w
- Datei schließen:
:q
und wenn du nicht vorher speichern möchtest::q!
- Hilfe anschauen:
:help Befehl
Eingebauter Dateiexplorer
Vim hat einen eigenen grafischen Dateiexplorer. Diesen kann man mit :Explore
(man achte auf das große E
) – oder kurz :Ex
– öffnen und darin navigieren. Entweder man wählt dann eine Datei, die geöffnet wird oder man schließt ihn mit :q
.
Ein paar weitere Arten von :Explore
:
:Sexplore
/:Sex
Teilt den Bildschirm horizontal:Lexplore
/:Lex
Teilt vertikal und zeigt den Explorer links an:Texplore
/:Tex
Erstellt einen neuen Tab in dem die Datei geöffnet wird
Tabs
Auch Tabs bringt vim bereits mit:
:tabnew
öffnen einen neuen Tab:tabfind /path/to/file
öffnet die angegebene Datei in einem neuen Tab:tabclose
schließt den Tab
Mit STRG+Bild-rauf
und STRG+Bild-runter
kann man zwischen den Tabs navigieren.
Fenster splitten
Vim bietet eine Möglichkeit den Bildschirm mit :split
/:sp
horizontal und mit :vsplit
/:vs
vertikal zu teilen. Die geöffnete Datei wird dann zwei mal dargestellt.
Mit STRG+W STRG+W
kann man zwischen den Teilen springen (vim geht die dann der Reihe nach durch).
In Kombination mit Tabs ist dann die aktuelle Tab-Seite geteilt. Andere Tabs sind nicht geteilt.
Suchen und Ersetzen
Unter Linux ist das Schema /Suchbegriff
sehr weit verbreitet (z.B. im pager less
). Einfach im Normal-Mode drauf los tippen und mit Enter
die Suche starten. Dadurch springt Vim zum ersten Ergebnis und man kann mit n
zum nächsten, bzw. mit N
zum vorherigen Ergebnis springen.
Ersetzen geht nach einem vergleichbaren Schema vor:
:s/alt/neu/
ersetzt das erste „alt“ in der aktuellen Zeile durch ein „neu“:s/alt/neu/g
ersetzt jedes „alt“ in der aktuellen Zeile durch ein „neu“:%s/alt/neu/g
ersetzt jedes „alt“ in der Datei durch ein „neu“:%s/alt/neu/gc
ersetzt jedes „alt“ in der Datei durch ein „neu“, fragt aber bei jedem Vorkommnis nach
Springen
Neben dem klassischen Suchen gibt es leichtgewichtige Varianten zum Finden von gewissen Vorkommnissen oder Stellen in der Datei:
*
nimmt das Wort unterm Cursor und springt zum nächsten Vorkommnis#
nimmt das Wort unterm Cursor und springt zum vorherigen VorkommnisgD
nimmt das Wort unterm Cursor und springt zum ersten Vorkommnis in der Datei
(merke:gD
= goto Definition)gg
springt zum DateianfangG
springt zum Dateiende$
springt zum Zeilenende^
/_
springt zum ersten Zeichen in der Zeile, was kein Leerzeichen ist0
springt zum absoluten Zeilenanfang
Bauen, ausführen und Debuggen
Da ich keine Plugins in diesem Artikel nutzen möchte, werde ich lediglich Tricks zeigen, die das Nutzen von z.B. gdb einfacher machen.
Man kann aus vim heraus Bash-Befehle ausführen und somit z.B. die Anwendung bauen und ausführen. Zum bauen kann man z.B. make starten, was dann so aussieht: :!make
Das !
bringt vim dazu den nächsten Befehl als externes Programm in einer neuen Bash zu starten.
Angenommen aus make purzelt die Datei main
heraus, dann kann man mit :!make && ./main
direkt bauen uns starten. Es öffnet sich dabei eine Bash in der das alles ausgeführt wird. Neben make kann man eben auch gdb starten. Dazu entsprechend :!gdb
eingeben und fertig.
Man sollte vorher speichern und kann das dann z.B. mit make und gdb verbinden: :w | !make && gdb
Die Pipe (also
|
) verbindet zwei Befehle (wie &&
in der shell).
Zuletzt vereinfacht ein Shortcut das ganze noch weiter, so kann ein entsprechender .vimrc
-Eintrag so aussehen: nmap <C-D> :w <bar> !make all && gdb<cr>
Dadurch kann man dann mit CTRL+D
im Normal-Mode speichern, make aufrufen und danach direkt zu gdb springen.
Tipp:
Mit dem Terminal-Multiplexer screen
kann man dann vim und gdb in einem Terminalfenster direkt nebeneinander auf haben. Praktisch, wenn man rein im Terminal entwickelt.
Anpassungen an Vim
Wie oben schon angedeutet, kann man (unter Anderem) in der Datei .vimrc (im home-Ordner) Anpassungen an vim vornehmen. Hier meine Standard-vim-IDE-Einstellungen:
syntax enable |
Aktiviert Syntax Highlighting. |
:set tabstop=4 |
Setzt Tab-Breite auf vier Leerzeichen (Standard sind acht). |
:set number |
Zeigt Zeilennummern an. |
:set wildmenu |
Zeigt ein Menü für Vorschläge bei Befehlen an. Das tritt z.B. auf wenn man mit :tabfind und mehrmaligen TAB drücken nach einer Datei sucht. In einem kleinen Menü werden einem dann Vorschläge (also z.B. Dateien) angezeigt. |
:set cursorline |
Unterstreicht die Zeile in der der Cursor gerade ist. Praktisch, wenn man etwas sucht und nicht weiß wo der Cursor gerade ist. |
set colorcolumn=80 |
Zeigt einen Balken bei der 80-Zeichen-Grenze an. Praktisch, wenn Code-Konventionen nur eine gewisse Anzahl an Zeichen pro Zeile zulassen. |
imap <C-@> <C-n> |
Zeigt bei STRG+Leertaste ein Menü für Autovervollständigung an. Funktioniert direkt im Insert-Mode. |
nmap <C-D> :w <bar> !make all && gdb<cr> |
Speichert, führt make aus und startet gdb mit STRG+D im Normal-Mode. |
nmap <C-C> :!bash<cr> |
Startet eine simple bash mit STRG+C im Normal-Mode. Praktisch, da man so weder einen neuen Terminal-Tab oder gar ein neues Terminal-Fenster braucht, noch vim beenden muss. Mit exit gelangt man zurück. |
Fazit
Mit Plugins kann man alles erreichen aber gefühlt 70% kann vim schon direkt und weitere 29% schafft man mit Shortcuts und Einstellungen. Plugins ergänzen dann vielleicht das eine restliche Prozent an Funktionalität. Vielleicht ist dieses eine Prozent das i-Tüpfelchen, aber man sollte sich überlegen, ob man jetzt zig Plugins herunterlädt. Die vorhandenen Hausmittel zu verwenden ist nun mal wesentliche schlanker und macht keine Probleme.
Lasst es mich wissen, wenn ihr weitere vim-IDE-Tricks nutzt 🙂
Danke, dass Sie Ihr Wissen mit uns teilen. Dies ist eine sehr hilfreiche Information. Ich freue mich darauf, mehr aus Ihrem Blog zu lesen.
Endlich mal ein Beitrag, der praktische Unterstützung ermöglicht!
Ich danke dir! Die Tricks sind sehr hilfreich und einfacher. Dies gibt mir viele Anregungen, VIM als einfache IDE zu verwenden.