29 marca 2026 roku odbyła się wydanie edytora tekstu Neovim wersja 0.12, a 6 kwietnia wydano poprawkę 0.12.1. To jeden z największych wydania ostatnich czasów: zamknięto ponad 340 zadań, dodano wbudowany menedżer wtyczek, klient HTTP, komendę ponownego uruchomienia, znacznie rozszerzono wbudowanego klienta LSP oraz eksperymentalnie przekształcono subsystem wiadomości.
Niekompatybilne zmiany:
- zostały usunięte przestarzałe API vim.diagnostic;
- Ctrl-R w trybie wstawiania teraz działa podobnie do wstawiania;
- zaprzestano wsparcia Python 3.7 i 3.8 w dostawcach;
- wtyczka shellmenu usunięto, tohtml została przeniesiona do pack/distro/opt/;
- Treesitter: dyrektywa offset! ma zastosowanie do wszystkich captures, get_parser zwraca nil w przypadku błędu, usunięto opcję „all” w Query:iter_matches;
- LSP: textDocument/codeLens przepisano jako provider dekoracji;
- UI: ext_messages odłączono od siatki wiadomości;
- Wsparcie RFC 3986 w path_with_url.
Wbudowany menedżer wtyczek (vim.pack):
Dodano eksperymentalny wbudowany menedżer wtyczek vim.pack. Wspiera lockfile do blokowania wersji, aktualizacje offline, określanie docelowych wersji, bufor potwierdzenia z nawigacją po [[[\/]] i code actions. Informacje o VCS są dostępne przez vim.pack.get. Postęp operacji wyświetlana jest poprzez nvim_echo z kind=progress. Zintegrowano z checkhealth.
LSP:
Wbudowany klient LSP otrzymał obszerne aktualizacje:
- nowa komenda :lsp do interaktywnego zarządzania klientami;
- vim.lsp.enable i vim.lsp.is_enabled do zarządzania serwerami LSP w razie potrzeby;
- wbudowane automatyczne uzupełnianie w trybie wstawiania z wsparciem completionItem/resolve (przy completeopt=popup), podgląd fragmentów i kolorów, wsparcie CompletionItem.labelDetails;
- inkrementalne zaznaczenie przez textDocument/selectionRange, w tym w trybie operator-pending;
- textDocument/documentColor jest włączony domyślnie, dodano wsparcie colorPresentation;
- wsparcie textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens wyświetlane wirtualnymi liniami przez provider dekoracji;
- ulepszenia semantycznych tokenów: wieloliniowe tokeny, zapytania range i full;
- wsparcie diagnostyka workspace, dynamiczna rejestracja, zapytanie diagnostic/refresh;
- podświetlenie zmienianego symbolu, wsparcie annotated text edits i linked editing ranges;
- nowe mapowania domyślne: grt — przejście do definicji typu, grx — uruchomienie codeLens;
- Klienci LSP automatycznie odłączają się przy zmianie typu pliku;
- uznane za przestarzałe vim.lsp.stop_client i vim.lsp.util.stylize_markdown.
Komenda :restart oraz :detach:
Nowa komenda :restart ponownie uruchamia Nvim i ponownie łączy bieżący interfejs użytkownika. Wsparcie :detach i :restart na Windows. Obie działają na wszystkich platformach.
Sieć (vim.net):
Dodano wbudowany klient HTTP vim.net.request i :edit url. Opcja vim.net.request z argumentem outbuf zapisuje odpowiedź serwera bezpośrednio do wskazanego bufora.
UI i komunikaty:
- ui2 — eksperymentalna przeróbka podsystemu komunikatów i wiersza poleceń, ext_cmdline/messages dla TUI;
- nowe grupy podświetlenia hl-StderrMsg i hl-StdoutMsg;
- nvim_echo obsługuje zdarzenia postępu z kind=progress;
- domyślna linia statusu wyświetla liczniki diagnostyczne, postęp i status LSP, stan zajętości bufory;
- ramka wyskakującego menu pumborder z paskiem przewijania.
API Lua:
- nowe typy vim.Pos i vim.Range do pracy z pozycjami i zakresami, konwersja między formatami pozycji kursora, extmark, Vim i LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek i Iter:skip dla iteracji non-list;
- vim.wait zwraca wyniki callback;
- vim.json.encode obsługuje pretty-print i sort_keys;
- parametr behavior w postaci funkcji dla tbl_extend i tbl_deep_extend;
- nowy moduł vim._async.
Diagnostyka:
- diagnostic.status z niestandardowym formatowaniem i podświetleniem;
- włączony filtr, opcja format dla setloclist/setqflist;
- Callback on_jump;
- przechodzi do powiązanych informacji z open_float;
- nakładanie podświetleń DiagnosticUnnecessary i DiagnosticDeprecated.
Treesitter:
- podświetlenie Markdown włączone domyślnie;
- inkrementalne wyodrębnienie na podstawie Treesitter.
Inne zmiany:
- :wall ++p tworzy nadrzędne katalogi dla każdego bufora;
- exrc wyszukuje pliki konfiguracyjne w nadrzędnych katalogach z z obowiązkowym potwierdzeniem przez :trust;
- :source może wykonywać bloki Lua i iniekcje Treesitter;
- nvim_open_tabpage — API do programowego tworzenia zakładek;
- nvim_set_hl z parametrem update aktualizuje pojedyncze atrybuty podświetlenia bez nadpisywania innych;
- styl pogrubiony i niestandardowe symbole w winborder;
- wsparcie statusline w pływających oknach;
- zmiana nazwy .nvimlog na nvim.log;
- podświetlenie aktywnego tabstop w snippach;
- Wbudowany runtime dla undotree;
- shelltemp=false domyślnie;
- Spellfile przechowywany w stdpath data;
- maksymalna liczba wyników wyszukiwania zwiększona do 999;
- Parser konfiguracji SSH;
- zsynchronizowany output w terminalu (tryb 2026);
- terminal pokazuje kod wyjścia poprzez tekst wirtualny.
Neovim 0.12.1:
Wydanie poprawkowe z 6 kwietnia 2026 z 26 poprawkami błędów i jedną nową funkcją — :restart ponownie łączy wszystkie UI. Wśród ważnych poprawek:
- :restart: dziedziczenie stderr w Unix, poprawne przetwarzanie —headless;
- LSP: powtórne żądanie codeLens refresh, podgląd fragmentów, resetowanie wersji document color;
- ui2: mruganie przy wejściu w pager, nieprawidłowe odnośniki do bufora, aktualizacja wskaźnika spill;
- Treesitter: wydzielanie z symbolami unicode na końcu węzła;
- vim.net: przetwarzanie archiwalnych URL przez tar/zip;
- vim.pack: użycie uv.available_parallelism do obliczania liczby wątków;
- Łaty bezpieczeństwa Vim: obejście modelu bezpieczeństwa przez modeline, obejście ścieżki w zip.vim;
- Optymalizacja vim.pos: użycie nvim_buf_line_count zamiast ładowania wszystkich linii.
Źródło: linux.org.ru
