Neovim: Unterschied zwischen den Versionen

Aus wiki.archlinux.de
 
(20 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
{{inuse|[[Benutzer:Dirk|Dirk]] ([[Benutzer Diskussion:Dirk|Diskussion]])}}
{{inuse|[[Benutzer:Dirk|Dirk]] ([[Benutzer Diskussion:Dirk|Diskussion]])}}
Neovim ist ein [[Vim|Vim-Fork]] mit dem Ziel, die Codebase zu verbessern und zu modernisieren, die implementierung von APIs zu vereinfachen, und den Editor leicht mittels {{wikipedia|Lua}} zu Konfigurieren und zu scripten.
[[Datei:Neovim standard.png|thumbnail|300px|Die Standard-„Startseite“ von Neovim Version 0.10.3 ohne weitergehende Konfiguration]]
Neovim ist ein [[Vim|Vim-Fork]] mit dem Ziel, die Codebase zu verbessern und zu modernisieren, die Implementierung von APIs zu vereinfachen, und den Editor leicht mittels {{wikipedia|Lua}} zu Konfigurieren und zu scripten.


{{installation|paket=neovim}}
{{installation|paket=neovim}}
Zeile 19: Zeile 20:


== Konfiguration ==
== Konfiguration ==
[[Datei:Neovim simple config.png|thumbnail|250px|Neovim in der einfachen Beispielkonfiguration zeigt in der Datei {{ic|wikibeispiel}} die relativen Zeilennummern, die hervorgehobene Cursorzeile, und den Rechtschreibfehler an.]]
Die Konfiguration erfolgt standardmäßig innerhalb des Verzeichnisses {{ic|~/.config/nvim}}. Von dort wird die Datei {{ic|init.lua}} geladen und der in ihr vorhandene Lua-Code zur Konfiguration geladen.
Die Konfiguration von Neovim wird durch das Verändern von Lua-''Tables'' vorgenommen. ''Tables'' sind eine flexible Datenstruktur, die verwendet wird, um Arrays, Listen, Dictionaries oder Objekte zu speichern und zu verwalten. Der am meisten benutzte ''Table'' ist {{ic|vim.opt}}. Über diesen Table wird Neovim generell konfiguriert.
Da die Konfiguration sehr schnell sehr individuell wird, sei hier nur auf zwei gängige Varianten der Konfiguration eingegangen.
{{hc|1=~/.config/nvim/init.lua|2=
vim.opt.cursorline    = true  -- Aktuelle Zeile des Cursors hervorheben
vim.opt.spell          = true  -- Rechtschreibprüfung aktivieren
vim.opt.spelllang      = 'de'  -- Sprache der Rechtschreibprüfung einstellen
vim.opt.relativenumber = true  -- Zeige relative Zeilennummern an
}}
[[Datei:Neovim_unicode_listchars.png|thumbnail|250px|Neovim zeigt die angepassten ''Listchars'' (in grau) aus dem erweiterten Beispiel an.]]
Einige Tables können auch durch Append-Aufrufe erweitert oder angepasst werden.
{{hc|1=~/.config/nvim/init.lua|2=
vim.opt_local.wrap = false  -- Führe keinen Zeilenumbruch aus
vim.opt.list      = true  -- Zeige Listchars an
vim.opt.listchars:append({
  tab      = '┏━┓',  -- Drei Zeichen aus denen das Tab gebaut wird
  trail    = '␣',    -- Leerzeichen am Zeilenende
  nbsp    = '▂',    -- Schmales geschütztes Leerzeichen
  precedes = '❰',    -- Langer Text, der nach links aus dem Buffer läuft
  extends  = '❱'    -- Langer Text, der nach rechts aus dem Buffer läuft
})
}}
Dieses Beispiel definiert einige der ''Listchars'' um, Sonderzeichen die Standardmäßig nicht angezeigt werden. Normaler weise benutzt Neovim dafür gewöhnliche ASCII-Zeichen. Hierdurch werden Unicode-Zeichen definiert.


== Plugins ==
== Plugins ==
Plugins werden automatisch geladen, wenn sich die Plugin-Dateien in einem Unterverzeichnis eines im {{ic|runtimepath}} Vorhandenen Verzeichnisses befinden. Man kann sich diesen ''Table'' innerhalb Neovims anzeigen lassen.
{{hc|1=:lua print(vim.inspect(vim.opt.runtimepath:get()))|2=
{
  "/home/USERNAME/.config/nvim",
  "/home/USERNAME/.local/share/nvim/site",
  "/home/USERNAME/.config/nvim/after",
  "/usr/share/nvim/site",
  "/usr/share/nvim/runtime",
  [...]
}
}}


=== Pluginmanager ===
Plugins, die dort liegen, lassen sich mittels Lua direkt als Module laden.


=== Pluginkonfiguration ===
require('mein_plugin')          -- Plugin aus dem Verzeichnis `mein_plugin`
require('weitere_plugins.foo')  -- Plugin aus dem Verzeichnis `weitere_plugins/foo`
 
Die Konfiguration der Plugins ist abhängig davon, was die Plugins an Konfiguration unterstützen. Zum Beispiel kann man ein Plugin wie folgt laden:
 
require('mein_plugin').setup({
  option_A = true,
  option_b = 'foobar'
})
 
Damit wird das Plugin beim laden direkt konfiguriert. Welche Parameter ein Plugin interpretieren kann, geht aus der jeweiligen Plugindokumentation hervor.
 
=== Manuelle Installation ===
{{unvollständig|inline=1}}
 
=== Pluginmanager (am Beispiel von ''lazy.nvim'') ===
Für die Installation, Konfiguration, und das Laden von Plugins, ohne jedes mal manuell das Plugin herunterzuladen und einzurichten, haben sich Pluginmanager etabliert. Diese fassen den gesamten Prozess zusammen und bieten auch meist eine entsprechende Schnittstelle zur Überprüfung und Wartung der Plugins.
 
Der am weitesten verbreitete und funktionsreichste Pluginmanager ist {{ic|lazy.nvim}}. Dieser ist sehr auf Performance ausgelegt und bietet zudem die Möglichkeit, Plugins erst dann zu laden, wenn sie erstmalig benutzt werden. So kann zum Beispiel ein Textformatierplugin erst dann geladen werden, wenn die entsprechende Tastenkombination gedrückt wird, anstatt immer direkt bei jedem starten von Neovim geladen zu werden, was die Startzeit insgesamt gesehen deutlich verbessert.
 
==== Installation ====
''lazy.nvim'' benötigt [[Git]], dies muss also installiert sein. Dann lädt man die Plugin-Dateien herunter und stellt sie dem {{ic|runtimepath}} voran. Um die Konfiguration in sich geschlossen zu halten, kann man dies innerhalb der Neovim-Konfiguration erledigen, und muss auf dem Zielsystem beim Verteilen der Konfiguration nur sicherstellen, dass Git (und eben Neovim) installiert sind.
 
{{hc|1=~/.config/nvim/init.lua|2=
local lazypath = vim.fn.stdpath('data')..'/lazy/lazy.nvim'  -- Zielpfad definieren
vim.opt.rtp:prepend(lazypath)                              -- Zielpfad voranstellen
 
-- Falls lazy.nvim nicht installiert ist ...
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({'git', 'clone',
    '--branch=stable', '--filter=blob:none',
    '<nowiki>https://github.com/folke/lazy.nvim.git</nowiki>',
    lazypath
  })
end
}}
 
Damit wird der Pluginmanager initial installiert falls er nicht vorhanden sein sollte. Will man auch noch das letzte bisschen Performance rauskitzeln, so kann man die {{ic|if not}}-Abfrage ersatzlos entfernen, nachdem lazy.nvim installiert wurde, die Konfiguration ist dann allerdings nicht mehr komplett portabel, da Neovim ein installiertes lazy.nvim voraussetzt.
 
Wenn Pluginkonfigurationsdateien anlegt werden, werden die konfigurierten Plugins von lazy.nvim als Git-Repositorys unter {{ic|~/.local/share/nvim/lazy/}} abgelegt und von dort auch geladen. Man sollte hier nichts verändern. Unter {{ic|~/.cache/nvim/luac/}} werden mittels luac kompilierte Varianten der Plugins abgelegt, was das Laden der Plugins beschleunigt.
 
==== Konfiguration ====
[[Datei:Neovim_lazy_dialog_installation.png|thumbnail|300px|Der Pluginmanager ''lazy.nvim'' hat das Plugin ''nvim-treesitter'' erkannt und automatisch installiert.]]
 
Nachdem lazy.nvim installiert wurde, muss es einmalig geladen werden. Hier bietet sich gleich an, die Plugins im Verzeichnis {{ic|~/.config/nvim/lua/plugins}} zu verwalten. In diesem Verzeichnis liegende Lua-Dateien werden durch den Pluginmanager als Pluginkonfigurationsdateien interpretiert und geladen.
 
require('lazy').setup('plugins')
 
Sofern im Verzeichnis {{ic|~/.config/nvim/lua/plugins}} keine Dateien liegen, kommt es zu einer Fehlermeldung über nicht gefundene Spezifikationen für das Modul {{ic|plugins}}.
 
===== Plugin-Installation (Syntaxhighlighting) =====
Zuerst sollte also ein Plugin geladen werden. Hier bietet sich das Treesitter-Plugin an, um über den in Neovim integrierten Parser ''Tree-sitter'' semantisches Syntaxhighlighting zu erhalten.
 
{{hc|1=~/.config/nvim/lua/plugins/treesitter.lua|2=
return {
  'nvim-treesitter/nvim-treesitter',
  build = ':TSUpdate',
  event = { 'BufRead' },
  main = 'nvim-treesitter.configs',
  opts = { -- Das Plugin bietet noch diverse weitere Optionen, hier seien also nur die wichtigsten genannt.
    indent = { enable = true },  -- Automatische Einrückungen mit Tree-sitter
    highlight = { enable=true },  -- Das Syntax-Highlighting einschalten
    auto_install = true,          -- Highlighting-Daten automatisch installieren
  }
}
}}
 
Darüber wird das Treesitter-Plugin geladen. Der erste Eintrag im Table definiert, von wo das Plugin geladen wird. Wenn die Angabe im Schema {{ic|author/pluginname}} ist, wird Versucht, das Plugin von GitHub zu laden. Bei Angabe eines vollständigen URLs von eben jenem URL. Wenn man {{ic|1=dir = '/pfad/zum/plugin'}} benutzt, wird das Plugin ohne Download direkt vom angegebenen Pfad geladen.
 
Wenn Neovim nun gestartet wird, erkennt der Pluginmanager automatisch die Plugindatei und lädt das entsprechende Plugin herunter. Verlassen wird der Dialog mit {{taste|Q}}. Man kann den Dialog jederzeit mittels {{ic|:Lazy}} öffnen. Die Einzelnen Dialogreiter werden mittels {{taste|Shift}}+{{taste|H}}, {{taste|I}}, {{taste|U}}, etc. aufgerufen und stellen diverse Informationen und Aktionen bereit.
 
Es wird beim öffnen anderer Dateien nun zudem automatisch geprüft, ob Tree-sitter die Syntax der Datei erkennt, und wenn ja – und wenn noch nicht geschehen – werden automatisch die Syntaxhighlightinginformationen heruntergeladen und angewendet.
 
===== Colorscheme-Installation (Theme) =====
[[Datei:Neovim colorscheme example.png|thumbnail|250px|Neovim zeigt eine [[Systemd|Systemd-Unit]] an. Oben mit dem Colorscheme aus dem Beispiel, unten mit dem Original-Colorscheme.]]
Das Standard-Theme von Neovim ist sehr minimalistisch. Es wird dank des {{ic|nvim-treesitter}}-Plugins dieses zwar richtig angewendet, aber es wird nur wenig farblich unterschieden. Im Internet lassen sich viele Colorschemes finden, die sich einfach als Plugin installieren lassen, und mittels lazy.nvim aktiviert werden können.
 
Es wird empfohlen, das Colorscheme sofort zu laden, und dies auch mit hoher Priorität zu tun, so dass das Colorscheme auf jeden Fall geladen ist, bevor der Pluginmanager irgendetwas anderes lädt oder Neovim mit der Anzeige beginnt.
 
{{hc|1=~/.config/nvim/lua/plugins/colorscheme.lua|2=
return {
  'sainnhe/everforest',  -- Repository
  lazy = false,          -- Colorscheme sofort laden
  priority = 1000,      -- Mit hoher Priorität laden
  config = function ()
    vim.opt.background = 'light'          -- Hellen Hintergrund definieren
    vim.g.everforest_background = 'soft'  -- Hintergrundvariante bestimmen
    vim.cmd.colorscheme('everforest')    -- Das Colorscheme setzen
  end
}
}}
 
Hier wird das Colorscheme [https://github.com/sainnhe/everforest everforest] {{sprache|en}} in einer hellen Variante mit sanftem Hintergrund geladen. Colorschemes können – wie alle anderen Plugins – verschiedene Konfigurationsoptionen besitzen, die in den jeweiligen Readmes zu finden sind.


== Siehe auch ==
== Siehe auch ==
Zeile 33: Zeile 169:
* [https://msgpack.org/ Das Kommunikationsprotokoll MessagePack] {{sprache|en}}
* [https://msgpack.org/ Das Kommunikationsprotokoll MessagePack] {{sprache|en}}
* [https://tree-sitter.github.io/tree-sitter/ Der Parser Tree-sitter] {{sprache|en}}
* [https://tree-sitter.github.io/tree-sitter/ Der Parser Tree-sitter] {{sprache|en}}
* [https://github.com/folke/lazy.nvim Repository von lazy.nvim] {{sprache|en}}
* [https://dotfyle.com/neovim/colorscheme/top Sammlung vieler Colorschemes] {{sprache|en}}
[[Kategorie:Konsole]]
[[Kategorie:Editor]]
[[en:Neovim]]

Aktuelle Version vom 16. Januar 2025, 22:55 Uhr

„Neovim“ wurde von Dirk (Diskussion) als in Bearbeitung markiert. Um Bearbeitungskonflikte zu vermeiden, kontaktiere Dirk (Diskussion) bitte, bevor du den Artikel bearbeitest.


Die Standard-„Startseite“ von Neovim Version 0.10.3 ohne weitergehende Konfiguration

Neovim ist ein Vim-Fork mit dem Ziel, die Codebase zu verbessern und zu modernisieren, die Implementierung von APIs zu vereinfachen, und den Editor leicht mittels Lua zu Konfigurieren und zu scripten.

Installation

Das Programm ist als neovim in extra verfügbar, und kann von dort mittels Pacman installiert werden.

pacman -S neovim

Neovim lässt sich mittels seines Kurznamens nvim starten.

Vergleich zu Vim

Neovim ist vollständig kompatibel zum modalen Bearbeitungs-Workflow von Vim, sowie zu Vimscript v1, unterscheidet sich aber in einigen Punkten.

  • APIs stehen bei Neovim an erster Stelle, sie können von externen Programmen untersucht werden, sind dokumentiert, und es können verschiedene Versionen der APIs angeboten werden.
  • Die Kommunikation innerhalb Neovims wird über MessagePack realisiert, das es ermöglicht, Erweiterung in beliebigen Programmiersprachen zu entwickeln.
  • Neovim kann sehr einfach als Editor oder als Scripthost in andere Programme eingebettet werden.
  • Als Konfigurations- und Plugin-Sprache steht Lua an erster Stelle.
  • Der Parser generiert einen AST, Syntaxhighlighting und Fehleranalyse sind daher semantisch möglich, und nicht nur basierend auf regulären Ausdrücken.
  • Eingebauter LSP-Client

Es werden Vim-Plugins bis Version 8.x unterstützt. Es ist nicht geplant, Vimscript 9.x zu unterstützen.

Konfiguration

Neovim in der einfachen Beispielkonfiguration zeigt in der Datei wikibeispiel die relativen Zeilennummern, die hervorgehobene Cursorzeile, und den Rechtschreibfehler an.

Die Konfiguration erfolgt standardmäßig innerhalb des Verzeichnisses ~/.config/nvim. Von dort wird die Datei init.lua geladen und der in ihr vorhandene Lua-Code zur Konfiguration geladen.

Die Konfiguration von Neovim wird durch das Verändern von Lua-Tables vorgenommen. Tables sind eine flexible Datenstruktur, die verwendet wird, um Arrays, Listen, Dictionaries oder Objekte zu speichern und zu verwalten. Der am meisten benutzte Table ist vim.opt. Über diesen Table wird Neovim generell konfiguriert.

Da die Konfiguration sehr schnell sehr individuell wird, sei hier nur auf zwei gängige Varianten der Konfiguration eingegangen.

~/.config/nvim/init.lua
vim.opt.cursorline     = true  -- Aktuelle Zeile des Cursors hervorheben
vim.opt.spell          = true  -- Rechtschreibprüfung aktivieren
vim.opt.spelllang      = 'de'  -- Sprache der Rechtschreibprüfung einstellen
vim.opt.relativenumber = true  -- Zeige relative Zeilennummern an
Neovim zeigt die angepassten Listchars (in grau) aus dem erweiterten Beispiel an.

Einige Tables können auch durch Append-Aufrufe erweitert oder angepasst werden.

~/.config/nvim/init.lua
vim.opt_local.wrap = false  -- Führe keinen Zeilenumbruch aus
vim.opt.list       = true   -- Zeige Listchars an

vim.opt.listchars:append({
  tab      = '┏━┓',  -- Drei Zeichen aus denen das Tab gebaut wird
  trail    = '␣',    -- Leerzeichen am Zeilenende
  nbsp     = '▂',    -- Schmales geschütztes Leerzeichen
  precedes = '❰',    -- Langer Text, der nach links aus dem Buffer läuft
  extends  = '❱'     -- Langer Text, der nach rechts aus dem Buffer läuft
})

Dieses Beispiel definiert einige der Listchars um, Sonderzeichen die Standardmäßig nicht angezeigt werden. Normaler weise benutzt Neovim dafür gewöhnliche ASCII-Zeichen. Hierdurch werden Unicode-Zeichen definiert.

Plugins

Plugins werden automatisch geladen, wenn sich die Plugin-Dateien in einem Unterverzeichnis eines im runtimepath Vorhandenen Verzeichnisses befinden. Man kann sich diesen Table innerhalb Neovims anzeigen lassen.

:lua print(vim.inspect(vim.opt.runtimepath:get()))
{
  "/home/USERNAME/.config/nvim",
  "/home/USERNAME/.local/share/nvim/site",
  "/home/USERNAME/.config/nvim/after",
  "/usr/share/nvim/site",
  "/usr/share/nvim/runtime",
  [...]
}

Plugins, die dort liegen, lassen sich mittels Lua direkt als Module laden.

require('mein_plugin')          -- Plugin aus dem Verzeichnis `mein_plugin`
require('weitere_plugins.foo')  -- Plugin aus dem Verzeichnis `weitere_plugins/foo`

Die Konfiguration der Plugins ist abhängig davon, was die Plugins an Konfiguration unterstützen. Zum Beispiel kann man ein Plugin wie folgt laden:

require('mein_plugin').setup({
  option_A = true,
  option_b = 'foobar'
})

Damit wird das Plugin beim laden direkt konfiguriert. Welche Parameter ein Plugin interpretieren kann, geht aus der jeweiligen Plugindokumentation hervor.

Manuelle Installation

Dieser Artikel oder Artikelabschnitt ist noch nicht vollständig!

Pluginmanager (am Beispiel von lazy.nvim)

Für die Installation, Konfiguration, und das Laden von Plugins, ohne jedes mal manuell das Plugin herunterzuladen und einzurichten, haben sich Pluginmanager etabliert. Diese fassen den gesamten Prozess zusammen und bieten auch meist eine entsprechende Schnittstelle zur Überprüfung und Wartung der Plugins.

Der am weitesten verbreitete und funktionsreichste Pluginmanager ist lazy.nvim. Dieser ist sehr auf Performance ausgelegt und bietet zudem die Möglichkeit, Plugins erst dann zu laden, wenn sie erstmalig benutzt werden. So kann zum Beispiel ein Textformatierplugin erst dann geladen werden, wenn die entsprechende Tastenkombination gedrückt wird, anstatt immer direkt bei jedem starten von Neovim geladen zu werden, was die Startzeit insgesamt gesehen deutlich verbessert.

Installation

lazy.nvim benötigt Git, dies muss also installiert sein. Dann lädt man die Plugin-Dateien herunter und stellt sie dem runtimepath voran. Um die Konfiguration in sich geschlossen zu halten, kann man dies innerhalb der Neovim-Konfiguration erledigen, und muss auf dem Zielsystem beim Verteilen der Konfiguration nur sicherstellen, dass Git (und eben Neovim) installiert sind.

~/.config/nvim/init.lua
local lazypath = vim.fn.stdpath('data')..'/lazy/lazy.nvim'  -- Zielpfad definieren
vim.opt.rtp:prepend(lazypath)                               -- Zielpfad voranstellen

-- Falls lazy.nvim nicht installiert ist ...
if not vim.loop.fs_stat(lazypath) then
  vim.fn.system({'git', 'clone',
    '--branch=stable', '--filter=blob:none',
    'https://github.com/folke/lazy.nvim.git',
    lazypath
  })
end

Damit wird der Pluginmanager initial installiert falls er nicht vorhanden sein sollte. Will man auch noch das letzte bisschen Performance rauskitzeln, so kann man die if not-Abfrage ersatzlos entfernen, nachdem lazy.nvim installiert wurde, die Konfiguration ist dann allerdings nicht mehr komplett portabel, da Neovim ein installiertes lazy.nvim voraussetzt.

Wenn Pluginkonfigurationsdateien anlegt werden, werden die konfigurierten Plugins von lazy.nvim als Git-Repositorys unter ~/.local/share/nvim/lazy/ abgelegt und von dort auch geladen. Man sollte hier nichts verändern. Unter ~/.cache/nvim/luac/ werden mittels luac kompilierte Varianten der Plugins abgelegt, was das Laden der Plugins beschleunigt.

Konfiguration

Der Pluginmanager lazy.nvim hat das Plugin nvim-treesitter erkannt und automatisch installiert.

Nachdem lazy.nvim installiert wurde, muss es einmalig geladen werden. Hier bietet sich gleich an, die Plugins im Verzeichnis ~/.config/nvim/lua/plugins zu verwalten. In diesem Verzeichnis liegende Lua-Dateien werden durch den Pluginmanager als Pluginkonfigurationsdateien interpretiert und geladen.

require('lazy').setup('plugins')

Sofern im Verzeichnis ~/.config/nvim/lua/plugins keine Dateien liegen, kommt es zu einer Fehlermeldung über nicht gefundene Spezifikationen für das Modul plugins.

Plugin-Installation (Syntaxhighlighting)

Zuerst sollte also ein Plugin geladen werden. Hier bietet sich das Treesitter-Plugin an, um über den in Neovim integrierten Parser Tree-sitter semantisches Syntaxhighlighting zu erhalten.

~/.config/nvim/lua/plugins/treesitter.lua
return {
  'nvim-treesitter/nvim-treesitter',
  build = ':TSUpdate',
  event = { 'BufRead' },
  main = 'nvim-treesitter.configs',
  opts = { -- Das Plugin bietet noch diverse weitere Optionen, hier seien also nur die wichtigsten genannt.
    indent = { enable = true },   -- Automatische Einrückungen mit Tree-sitter
    highlight = { enable=true },  -- Das Syntax-Highlighting einschalten
    auto_install = true,          -- Highlighting-Daten automatisch installieren
  }
}

Darüber wird das Treesitter-Plugin geladen. Der erste Eintrag im Table definiert, von wo das Plugin geladen wird. Wenn die Angabe im Schema author/pluginname ist, wird Versucht, das Plugin von GitHub zu laden. Bei Angabe eines vollständigen URLs von eben jenem URL. Wenn man dir = '/pfad/zum/plugin' benutzt, wird das Plugin ohne Download direkt vom angegebenen Pfad geladen.

Wenn Neovim nun gestartet wird, erkennt der Pluginmanager automatisch die Plugindatei und lädt das entsprechende Plugin herunter. Verlassen wird der Dialog mit Q. Man kann den Dialog jederzeit mittels :Lazy öffnen. Die Einzelnen Dialogreiter werden mittels ⇧ Shift+H, I, U, etc. aufgerufen und stellen diverse Informationen und Aktionen bereit.

Es wird beim öffnen anderer Dateien nun zudem automatisch geprüft, ob Tree-sitter die Syntax der Datei erkennt, und wenn ja – und wenn noch nicht geschehen – werden automatisch die Syntaxhighlightinginformationen heruntergeladen und angewendet.

Colorscheme-Installation (Theme)
Neovim zeigt eine Systemd-Unit an. Oben mit dem Colorscheme aus dem Beispiel, unten mit dem Original-Colorscheme.

Das Standard-Theme von Neovim ist sehr minimalistisch. Es wird dank des nvim-treesitter-Plugins dieses zwar richtig angewendet, aber es wird nur wenig farblich unterschieden. Im Internet lassen sich viele Colorschemes finden, die sich einfach als Plugin installieren lassen, und mittels lazy.nvim aktiviert werden können.

Es wird empfohlen, das Colorscheme sofort zu laden, und dies auch mit hoher Priorität zu tun, so dass das Colorscheme auf jeden Fall geladen ist, bevor der Pluginmanager irgendetwas anderes lädt oder Neovim mit der Anzeige beginnt.

~/.config/nvim/lua/plugins/colorscheme.lua
return {
  'sainnhe/everforest',  -- Repository
  lazy = false,          -- Colorscheme sofort laden
  priority = 1000,       -- Mit hoher Priorität laden
  config = function ()
    vim.opt.background = 'light'          -- Hellen Hintergrund definieren
    vim.g.everforest_background = 'soft'  -- Hintergrundvariante bestimmen
    vim.cmd.colorscheme('everforest')     -- Das Colorscheme setzen
  end
}

Hier wird das Colorscheme everforest in einer hellen Variante mit sanftem Hintergrund geladen. Colorschemes können – wie alle anderen Plugins – verschiedene Konfigurationsoptionen besitzen, die in den jeweiligen Readmes zu finden sind.

Siehe auch

  • Vi und Vim für die „Vorgänger“

Weblinks