Am 29. März 2026 fand statt Release des Texteditors Neovim in der Version 0.12, und am 6. April wurde das korrigierende Release 0.12.1 veröffentlicht. Dies ist eines der größten Releases der letzten Zeit: über 340 Probleme wurden behoben, ein eingebauter Plugin-Manager, ein HTTP-Client, ein Neustart-Befehl, der eingebaute LSP-Client wurde erheblich erweitert, und das Meldesystem wurde experimentell überarbeitet.
Inkompatible Änderungen:
- wurden entfernt veraltete vim.diagnostic APIs;
- Ctrl-R im Einfügemodus funktioniert jetzt analog zum Einfügen;
- die Unterstützung wurde eingestellt für Python 3.7 und 3.8 in den Providern;
- das Plugin shellmenu wurde entfernt, tohtml wurde verschoben in pack/dist/opt/;
- Treesitter: Die Direktive offset! gilt für alle captures, get_parser gibt nil bei einem Fehler zurück, die Option „all“ in Query:iter_matches wurde entfernt;
- LSP: textDocument/codeLens wurde als Dekorationsprovider neu geschrieben;
- UI: ext_messages wurde von der Meldungsnetz getrennt;
- Unterstützung für RFC 3986 in path_with_url.
Der eingebaute Plugin-Manager (vim.pack):
Hinzugefügt ist ein experimenteller integrierter Plugin-Manager vim.pack. Unterstützt lockfile zur Festlegung von Versionen, Offline-Updates, Zielversionen, Bestätigungs-Puffer mit Navigation durch [[[\/]] und Codeaktionen. Informationen über VCS sind über vim.pack.get. Der Fortschritt der Operationen ArrayBuffer über nvim_echo mit kind=progress. Integriert mit checkhealth.
LSP:
Der integrierte LSP-Client hat ein umfassendes Update erhalten:
- neuer Befehl :lsp für die interaktive Verwaltung von Clients;
- vim.lsp.enable und vim.lsp.is_enabled zum Management der LSP-Server nach Bedarf;
- automatische Vervollständigung im Einfügemodus mit Unterstützung für completionItem/resolve (bei completeopt=popup), Vorschau von Snippets und Farben, Unterstützung für CompletionItem.labelDetails;
- inkrementelle Auswahl über textDocument/selectionRange, einschließlich im operator-pending Modus;
- textDocument/documentColor standardmäßig aktiviert, Unterstützung hinzugefügt für colorPresentation;
- unterstützt textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens wird als virtuelle Zeilen angezeigt über den Dekorationsprovider;
- Verbesserungen der semantischen Tokens: mehrzeilige Tokens, Anfragen Bereich und voll;
- unterstützt Workspace-Diagnosen, dynamische Registrierung, Anfrage diagnostic/refresh;
- Hervorhebung von umbenannten Symbolen, Unterstützung für annotierte Textänderungen und verknüpfte Bearbeitungsbereiche;
- neue Standard-Mappings: grt — Springen zu Definitionen von Typen, grx — Start von CodeLens;
- LSP-Clients trennen sich automatisch beim Wechsel des Dateityps;
- wurden als veraltet erklärt vim.lsp.stop_client und vim.lsp.util.stylize_markdown.
Der Befehl :restart und :detach:
Neuer Befehl :restart startet Nvim neu und verbindet die aktuelle UI wieder. Unterstützung :detach und :restart unter Windows. Beide funktionieren auf allen Plattformen.
Netzwerk (vim.net):
Integrierter HTTP-Client hinzugefügt vim.net.request und :edit url. Variante vim.net.request mit dem Argument outbuf schreibt die Serverantwort direkt in den angegebenen Puffer.
UI und Nachrichten:
- ui2 — experimentelle Überarbeitung des Nachrichtensystems und der Befehlszeile, ext_cmdline/messages für TUI;
- neue Highlight-Gruppen hl-StderrMsg und hl-StdoutMsg;
- nvim_echo unterstützt Fortschrittsereignisse mit kind=progress;
- Standard-Statuszeile zeigt Diagnosezähler, Fortschritt und LSP-Status an, auslastung des Puffers;
- Rahmen für das Popup-Menü pumborder mit Scrollbar.
Lua API:
- neue Typen vim.Pos und vim.Range zum Arbeiten mit Positionen und Bereichen, Konvertierung zwischen den Formaten für Cursor, extmark, Vim und LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek und Iter:skip für non-list Iteratoren;
- vim.wait gibt Ergebnisse des Callback zurück;
- vim.json.encode unterstützt pretty-print und sort_keys;
- Parameter behavior als Funktion für tbl_extend und tbl_deep_extend;
- neues Modul vim._async.
Diagnose:
- diagnostic.status c benutzerdefinierte Formatierung und Highlighting;
- Filter aktiviert, Option format für setloclist/setqflist;
- Callback on_jump;
- Wechsel zu verknüpften Informationen aus open_float;
- Überlagerung von Hervorhebungen DiagnosticUnnecessary und DiagnosticDeprecated.
Treesitter:
- Markdown-Hervorhebung ist standardmäßig aktiviert;
- inkrementelle Hervorhebung basierend auf Treesitter.
Weitere Änderungen:
- :wall ++p erstellt die übergeordneten Verzeichnisse für jeden Puffer;
- exrc sucht Konfigurationsdateien in übergeordneten Verzeichnissen c mit obligatorischer Bestätigung über :trust;
- :source kann Lua-Blöcke und Treesitter-Injektionen durchführen;
- nvim_open_tabpage — API für die programmgesteuerte Erstellung von Tabs;
- nvim_set_hl mit dem Parameter update aktualisiert einzelne Hervorhebungsattribute, ohne andere zu überschreiben;
- Stil fett und benutzerdefinierte Symbole in winborder;
- unterstützt Statuszeile in schwebenden Fenstern;
- Umbenennung von .nvimlog in nvim.log;
- Hervorhebung des aktiven tabstop in Snippets;
- Integrierte Laufzeit für undotree;
- shelltemp=false standardmäßig;
- Spellfile wird im stdpath data gespeichert;
- maximale Suchergebnisse erhöht auf 999;
- SSH-Konfigurationsparser;
- synchronisierter Output im Terminal (modus 2026);
- Terminal zeigt Exit-Code an über virtuellen Text.
Neovim 0.12.1:
Korrekturversion vom 6. April 2026 mit 26 Fehlerbehebungen und einer neuen Möglichkeit — :restart stellt alle UIs wieder her.. Zu den wichtigen Korrekturen gehören:
- :restart: stderr-Vererbung unter Unix, korrekte Behandlung —headless;
- LSP: erneuter CodeLens-Refresh-Anfrage, Vorschau von Snippets, Rücksetzung der document color Version;
- ui2: Flackern beim Betreten des Pagers, inkorrekte Links zur Zwischenablage, Aktualisierung des Spill Indicators;
- Treesitter: Markierung mit Unicode-Zeichen am Ende des Knotens;
- vim.net: Verarbeitung archivierbarer URLs über tar/zip;
- vim.pack: Verwendung von uv.available_parallelism zur Berechnung der Anzahl der Threads;
- Vim-Sicherheitspatches: Umgehung des Sicherheitsmodells über modeline, Umgehung des Pfads in zip.vim;
- Optimierung von vim.pos: Verwendung von nvim_buf_line_count statt dem Laden aller Zeilen.
Quelle: linux.org.ru
