Eine IDE in einem Container oder auf einem entfernten Rechner? Oder zumindest ein Editor, der nahe an eine IDE herankommt? Ein Editor, der für die gängigen Sprachen Autocompletion anbietet und die Parameter von Methoden beschreibt? Ein Editor mit eingebauten Filebrowser?
Dieser Editor existiert in der Vim Distribution SpaceVim:
SpaceVim ist kein Fork von Vim, sondern eine Vim Distribution von gebräuchlichen und nützlichen Plugins. Den Vorteil von SpaceVim sehe ich persönlich vor allem darin, dass ich mir das Installieren und Konfigurieren von Vim Plugins und das Schreiben von Aufwändigen Vim Konfigurationen sparen kann.
Auf der SpaceVim Webseite ist das folgendermassen beschrieben:
SpaceVim is a community-driven Vim distribution with layer feature. SpaceVim manages collections of plugins in layers. Layers make it easy for you, the user, to enable a new language or feature by grouping all the related plugins together. It got inspired by spacemacs.
https://spacevim.org/about/
Installation in einen Container
Die Installation von SpaceVim inklusive benötigter Libraries:
docker container run -it --name=testcontainer ubuntu:bionic /bin/bash
apt update
apt install vim
apt install make
apt install gcc
apt install curl
apt install git
apt install python3-pip
python3 -m pip install --user flake8
python3 -m pip install --user isort
python3 -m pip install --user yapf
curl -sLf https://spacevim.org/install.sh | bash
cd ~/.SpaceVim/bundle/vimproc.vim/
make
Konfiguration
Dann benötigt es noch etwas Handarbeit. Das SpaceVim Konfigurationsfile findet man unter ~/.SpaceVim.d/init.toml. Es kann aber auch direkt in Vim mit folgender Tastenkombination geladen werden: ‘Space’, f, v, d.
SpaceVim sollte nun das Konfigurationsfile geladen haben:
Folgender Code sollte hineinkopiert werden:
[[layers]]
name = "colorscheme"
[[layers]]
name = "tools"
[[layers]]
name = "debug"
[[layers]]
name = "lang#python"
[options]
filemanager = "nerdtree"
Colorscheme
Mit Colorscheme kann der Look angepasst werden. Die Themes sind auf SpaceVim aufgelistet. Im Dockercontainer war es mr unter root nicht möglich ein anderes Theme zu laden, in der VM funktioniert es aber tadellos. Geändert wird es im SpaceVim Konfigurationsfile (Tastenkombination ‘Space’, f, v, d) und Anpassen der Zeile:
colorscheme = "gruvbox"
lang#python
Mit dem Sprachsupport kommen auch Syntaxhighlighting und Autocompletion für spezifische Sprachen:
Am Anfang ist die Haptik etwas seltsam, aber man gewöhnt sich daran. Schnelles Editieren wie in VS-Code benötigt etwas Übung.
Filemanager
Der Filemanager kann mit <F3> aufgerufen werden, beim start von Vim wird er per Default aufgerufen.
Mit der Tastenkombination “2 x Crlt W” wechselt man in den Filemanager. Nerdtree sieht meiner Ansicht nach etwas besser aus, als der Standard Filemanager. Der Filemanager kann sich in Container als nützlich erweisen, wenn nur eine Session eröffnet wurde.
Die wichtigsten Shortcuts:
<F3>: Anzeigen von Filemanager (Ein/Aus)
Shift + i: Anzeigen von Dotfiles (Ein/Aus)
Bookmarks
Bookmarks können beim Bearbeiten von grösseren Scripts sehr hilfreich sein.
m, m : Bookmark setzen/entfernen
m, n : zum nächsten Bookmark springen
m, p : zum letzten Bookmark springen
Handhabung
Neben vielen Shortcuts, unterstützt SpaceVim auch die Maus. Generell ist die Taste <Space> ein guter Anlaufpunkt: diese öffnet ein interaktives Menü.
Die wichtigsten Shortcuts
Control + W + < : bei vsplit wird Windowsize des
aktiven Windows verkleinert
<Space>, f, v, d : öffnen des SpaceVim Konfigurationsfiles
Native Vim Commands sind natürlich auch unterstützt:
:split <Filename> : öffnen eines Files in einem separaten
Fenster
:vsplit <Filename> : öffnen eines Files bei einem
horizontalen Split
Fazit
Natürlich gibt es noch weit mehr über SpaceVim zu schreiben. Die Dokumentation ist umfangreich und man ahnt, wie konfigurierbar SpaceVim ist. Als minimalistische IDE auf einem entfernten Rechner oder notfalls in einem Container finde ich persönlich SpaceVim spannend.
Das Thema Git oder Debuggen habe ich in diesem Artikel nicht erwähnt. Vielleicht gibt es ja noch einen dritten Vim Teil, der sich um weitere Themen drehen.