ADMIN

2024

10

2024-09-29T12:00:00

Identitäts- und Datenschutz

PRAXIS

038

Open-Source-Tipp

Editor

Neovim konfigurieren und erweitern

Auf die Schnelle

von Thorsten Scherf

Veröffentlicht in Ausgabe 10/2024 - PRAXIS

Neovim ist ein beliebter Editor und wird von Entwicklern und Administratoren besonders wegen der vielfältigen Konfigurationsmöglichkeiten geschätzt. Die Lernkurve ist aber gerade für Einsteiger recht steil. Es gibt jedoch eine Reihe an Möglichkeiten, um den Einstieg leichter zu gestalten, darunter das Projekt kickstart.

Neovim (oder nvim) [1] ist eine Weiterentwicklung des bekannten Texteditors Vim. Die Software ist wesentlich schlanker als Vim selbst, was nicht zuletzt daher kommt, dass die Entwickler konsequent wenig bis gar nicht verwendete Funktionen aus der Codebasis entfernt haben. Der Editor unterstützt weiterhin Vimscript zur Konfiguration, allerdings steht von Haus aus eine Lua-Script-Engine zur Verfügung. Diese bietet im Vergleich zu Vimscript eine wesentlich bessere Performance und zudem setzen die meisten Plug-ins mittlerweile ebenfalls auf Lua.
Sind Sie auf der Suche nach einer Einführung in Lua, sollten Sie sich unbedingt die Webseite "Learn X in Y minutes" [2] ansehen. Dort finden Sie für eine Vielzahl unterschiedlicher Programmiersprachen eine übersichtliche Referenz der wichtigsten Eigenschaften der jeweiligen Sprache. Für Lua stehen unter [3] eine solche Referenz sowie Links zu weiteren Lua-Dokumentationen bereit. Wer sich ernsthaft mit Neovim beschäftigen möchte, sollte in jedem Fall ein gutes Verständnis der Lua-Programmiersprache mitbringen.
Neben dem recht neuen Plug-in-Manager lazy geht es in diesem Open-Source-Tipp auch um das Projekt kickstart, bei dem Sie eine ausführlich dokumentierte Konfigurationsdatei als Einstiegspunkt erhalten, um somit direkt mit Neovim loslegen zu können.
Neovim (oder nvim) [1] ist eine Weiterentwicklung des bekannten Texteditors Vim. Die Software ist wesentlich schlanker als Vim selbst, was nicht zuletzt daher kommt, dass die Entwickler konsequent wenig bis gar nicht verwendete Funktionen aus der Codebasis entfernt haben. Der Editor unterstützt weiterhin Vimscript zur Konfiguration, allerdings steht von Haus aus eine Lua-Script-Engine zur Verfügung. Diese bietet im Vergleich zu Vimscript eine wesentlich bessere Performance und zudem setzen die meisten Plug-ins mittlerweile ebenfalls auf Lua.
Sind Sie auf der Suche nach einer Einführung in Lua, sollten Sie sich unbedingt die Webseite "Learn X in Y minutes" [2] ansehen. Dort finden Sie für eine Vielzahl unterschiedlicher Programmiersprachen eine übersichtliche Referenz der wichtigsten Eigenschaften der jeweiligen Sprache. Für Lua stehen unter [3] eine solche Referenz sowie Links zu weiteren Lua-Dokumentationen bereit. Wer sich ernsthaft mit Neovim beschäftigen möchte, sollte in jedem Fall ein gutes Verständnis der Lua-Programmiersprache mitbringen.
Neben dem recht neuen Plug-in-Manager lazy geht es in diesem Open-Source-Tipp auch um das Projekt kickstart, bei dem Sie eine ausführlich dokumentierte Konfigurationsdatei als Einstiegspunkt erhalten, um somit direkt mit Neovim loslegen zu können.
Konfigurationsdatei in Lua
Eine individuelle Konfigurationsdatei können Benutzer im Ordner "~/.config/nvim/" anlegen. Das Verzeichnis "~/.config/" ist auf den meisten Plattformen in der "XDG_ CONFIG_HOME"-Variable definiert. Auch wenn Neovim noch diverse andere Orte nach einer Konfigurationsdatei absucht (man nvim), sollte eine neue Konfiguration das "XDG_CONFIG_HOME" Verzeichnis verwenden.
Die Konfigurationsdatei selbst heißt "init.lua". Diese können Sie nun natürlich von Hand anlegen oder nach einer passenden Datei im Netz suchen, allerdings führt dies gerade bei Einsteigern oftmals zu mehr Verwirrung, als es tatsächlich Nutzen bringt. Der Grund hierfür liegt in der riesigen Anzahl an unterschiedlichen Optionen und Plug-ins, die für den Editor zur Verfügung stehen und nicht immer selbsterklärend sind.
Neovim als Entwicklungsumgebung
Das GitHub-Projekt Neovim Lua [4] stellt neben vielen sehr beliebten Plug-ins auch das Repository kickstart zur Verfügung. Dieses enthält eine sehr gut kuratierte Konfigurationsdatei für den Editor. Neben gängigen Optionen, die im täglichen Umgang mit Neovim das Leben erleichtern, ist auch eine Vielzahl an unterschiedlichen Plug-ins in der Konfiguration aufgeführt. Ziel von kickstart ist es, dem Benutzer eine komplette Konfiguration anzubieten, um auch innerhalb von Neovim Features einer klassischen Entwicklungsumgebung (IDE) nutzen zu können.
Dazu zählen beispielsweise Features wie das automatische Vervollständigen von Programmcode, Darstellen von Definitionen einzelner Funktionen oder anderer Teile des Codes sowie auch eine Fuzzy-Suche. Für den Support unterschiedlicher Programmiersprachen greift Neovim auf das Language Server Protocol [6] zurück. Neovim selbst dient in diesem Fall als Client von externen LSP-Servern. Unter [7] finden Sie eine Liste der verfügbaren LSP-Server, die Neovim bei Bedarf automatisch einbinden und starten kann.
Plug-ins einbinden mit lazy
Um die Vielzahl der zur Verfügung stehenden Plug-ins einzubinden, greift die kickstart-Konfiguration auf den relativ neuen Plug-in-Manager lazy [8] zurück. Dieser löst in vielen Installation den bis dato sehr beliebten Plug-in-Manager Packer [9] vollständig ab. Tatsächlich ist es sogar so, dass der bisherige Maintainer von Packer das Projekt im August 2023 aufgegeben hat und nun ein neuer Maintainer gesucht wird. Wobei es fraglich ist, ob das Projekt überhaupt noch eine Zukunft hat. Immer mehr Anwender erfreuen sich an den vielen neuen Features, die lazy im Vergleich zu Packer anbietet. Neben einer exzellenten Performance kommt lazy beispielsweise auch mit einem textbasierten User-Interface daher, was den Umgang mit den einzelnen Plug-ins doch wesentlich vereinfacht.
Kickstart-Projekt
Um nun also mit einer vorgefertigten Konfigurationsdatei in die Neovim-Welt einzutauchen, sollten Sie zuerst einen Fork des kickstart-Projekts auf Github erzeugen. Wechseln Sie im Anschluss in das Verzeichnis "~/.config/nvim" und legen Sie dort mit dem folgenden Kommando eine Kopie des GitHub-Forks auf dem lokalen System an:
git clone https://github.com/<github user-name>/kickstart.nvim.git
Nach dem Klonvorgang haben Sie eine voll funktionsfähige Konfigurationsdatei "init. lua" im Verzeichnis "~/.config/nvim" vorliegen. Starten Sie nun Neovim durch den Aufruf von nvim, kümmert sich der Plug-in-Manager darum, sämtliche konfigurierten Erweiterungen zu laden und entsprechend den Einstellungen der "init.lua" zu konfigurieren. Damit dies ohne Probleme funktioniert, ist es erforderlich, dass git auf Ihrem System installiert ist, da die allermeisten Plug-ins in einem GitHub-Repository vorliegen. Des Weiteren ist es nützlich, wenn Sie im Vorfeld einen der unter [10] aufgeführten Nerdfonts installieren. Dies ist zwar nicht zwingend erforderlich, sorgt aber dafür, dass Neovim auf recht ansprechende Icons zurückgreifen kann, um diese dann beispielsweise in der Statuszeile anzeigen zu können.
Konfiguration bearbeiten
Der Sinn und Zweck des kickstart-Projekts ist es, dass Sie anhand der sehr gut dokumentierten Datei Ihre eigene, an Ihre Bedürfnisse angepasste Konfiguration entwickeln können und dadurch auch direkt ein besseres Verständnis der unterschiedlichen Konfigurationsmöglichkeiten des Editors erhalten.
Anstatt nun also einfach mit dieser Version der "init.lua" weiterzuarbeiten, sollten Sie die Datei Zeile für Zeile durcharbeiten, um zu verstehen, welche Einstellungen welche Auswirkungen auf das Verhalten von Neovim haben. Sämtliche Optionen und Plug-ins sind sehr gut dokumentiert und es gibt weitere Hinweise, wie Sie zusätzliche Hilfe zu den einzelnen Optionen erhalten können.
Die "init.lua"-Konfigurationsdatei gleicht einer kompletten Dokumentation. Es ist empfehlenswert, diese Datei Zeile für Zeile zu lesen.
Konfiguration modular gestalten
Sobald Sie sich näher mit der Konfiguration vertraut gemacht haben, können Sie im nächsten Schritt die "init.lua" in einzelne Konfigurationsdateien aufsplitten. Dies hilft dabei, einen besseren Überblick über die gesamte Konfiguration zu behalten, da diese im Laufe der Zeit doch recht komplex werden kann. So bietet es sich beispielsweise an, die Konfiguration der einzelnen Plug-ins in eine eigene Datei auszulagern oder gar für jede Erweiterung eine eigene Konfiguration anzulegen.
Wenn Ihnen das zu kompliziert klingt, keine Sorge. Auch hierfür gibt es nämlich bereits eine Art Blaupause. Unter [11] finden Sie einen Fork des kickstart-Projekts, der genau diese Aufgabe schon übernommen hat. Mit kickstart-modular erhalten Sie exakt die gleiche Funktionalität wie mit dem ursprünglichen Projekt, jedoch ist die gesamte Konfiguration bereits komplett modular aufgebaut.
Fazit
Neovim ist ein extrem leistungsfähiger Texteditor, der sehr viele Konfigurationsmöglichkeiten bietet. Dies hat jedoch den Preis, dass es oftmals schwierig ist, mit einer passenden Konfigurationsdatei in die Welt von Neovim einzutauchen. Mit dem kickstart- oder kickstart-modular-Projekt erhalten interessierte Anwender eine sehr gut dokumentierte Konfiguration, die den Einstieg in Neovim sehr erleichtert.
(dr)
Link-Codes
[1] Neovim: https://neovim.io/
[2] Learn X in Y minutes: https://learnxinyminutes.com/
[7] Language Server für unterschiedliche Programmiersprachen: hhttps://microsoft.github.io/language-server-protocol/implementors/servers/
[8] lazy.nvim Plug-in-Manager: https://github.com/folke/lazy.nvim
[9] Packer.nvim Plug-in-Manager: https://github.com/wbthomason/packer.nvim