29 марта 2026 года состоялся релиз текстового редактора Neovim версии 0.12, а 6 апреля вышел корректирующий выпуск 0.12.1. Это один из крупнейших релизов за последнее время: закрыто более 340 задач, добавлены встроенный менеджер плагинов, HTTP-клиент, команда перезапуска, существенно расширен встроенный LSP-клиент и экспериментально переработана подсистема сообщений.
Несовместимые изменения:
- удалены устаревшие API vim.diagnostic;
- Ctrl-R в режиме вставки теперь работает аналогично вставке;
- прекращена поддержка Python 3.7 и 3.8 в провайдерах;
- плагин shellmenu удалён, tohtml перемещён в pack/dist/opt/;
- Treesitter: директива offset! применяется ко всем captures, get_parser возвращает nil при ошибке, удалена опция «all» в Query:iter_matches;
- LSP: textDocument/codeLens переписан как decoration provider;
- UI: ext_messages отвязан от сетки сообщений;
- Поддержка RFC 3986 в path_with_url.
Встроенный менеджер плагинов (vim.pack):
Добавлен экспериментальный встроенный менеджер плагинов vim.pack. Поддерживает lockfile для фиксации версий, офлайн-обновления, указание целевых версий, буфер подтверждения с навигацией по [[[/]] и code actions. Информация о VCS доступна через vim.pack.get. Прогресс операций отображается через nvim_echo с kind=progress. Интегрирован с checkhealth.
LSP:
Встроенный LSP-клиент получил масштабное обновление:
- новая команда :lsp для интерактивного управления клиентами;
- vim.lsp.enable և vim.lsp.is_enabled для управления LSP-серверами по необходимости;
- встроенное автодополнение в режиме вставки с поддержкой completionItem/resolve (при completeopt=popup), предпросмотр сниппетов և цветов, поддержка CompletionItem.labelDetails;
- инкрементальное выделение через textDocument/selectionRange, в том числе в operator-pending режиме;
- textDocument/documentColor включён по умолчанию, добавлена поддержка colorPresentation;
- поддержка textDocument/documentLink, textDocument/inlineCompletion, textDocument/onTypeFormatting;
- codeLens отображается виртуальными строками через decoration provider;
- улучшения семантических токенов: многострочные токены, запросы range и full;
- поддержка workspace-диагностики, динамической регистрации, запроса diagnostic/refresh;
- подсветка переименовываемого символа, поддержка annotated text edits և linked editing ranges;
- новые маппинги по умолчанию: grt — переход к определению типа, grx — запуск codeLens;
- LSP-клиенты автоматически отсоединяются при смене filetype;
- устаревшими объявлены vim.lsp.stop_client և vim.lsp.util.stylize_markdown.
Команда :restart и :detach:
Новая команда :restart перезапускает Nvim и переподключает текущий UI. Поддержка :detach и :restart на Windows. Обе работают на всех платформах.
Сеть (vim.net):
Добавлен встроенный HTTP-клиент vim.net.request и :edit url. Вариант vim.net.request с аргументом outbuf записывает ответ сервера непосредственно в указанный буфер.
UI и сообщения:
- ui2 — экспериментальная переработка подсистемы сообщений и командной строки, ext_cmdline/messages для TUI;
- новые группы подсветки hl-StderrMsg и hl-StdoutMsg;
- nvim_echo поддерживает события прогресса с kind=progress;
- статусная строка по умолчанию показывает счётчики диагностики, прогресс и статус LSP, состояние занятости буфера;
- рамка всплывающего меню pumborder со скроллбаром.
Lua API:
- новые типы vim.Pos и vim.Range для работы с позициями и диапазонами, конвертация между форматами позиций курсора, extmark, Vim и LSP;
- vim.list.bisect, vim.list.unique;
- Iter:unique, Iter:peek и Iter:skip для non-list итераторов;
- vim.wait возвращает результаты callback;
- vim.json.encode поддерживает pretty-print и sort_keys;
- параметр behavior в виде функции для tbl_extend и tbl_deep_extend;
- новый модуль vim._async.
Диагностика:
- diagnostic.status с пользовательским форматированием և подсветкой;
- фильтр enabled, опция format для setloclist/setqflist;
- Callback on_jump;
- переход к связанной информации из open_float;
- наложение подсветок DiagnosticUnnecessary и DiagnosticDeprecated.
Treesitter:
- подсветка Markdown включена по умолчанию;
- инкрементальное выделение на основе Treesitter.
Прочие изменения:
- :wall ++p создаёт родительские директории для каждого буфера;
- exrc ищет конфигурационные файлы в родительских директориях с обязательным подтверждением через :trust;
- :source может выполнять Lua-блоки и Treesitter-инъекции;
- nvim_open_tabpage — API для программного создания вкладок;
- nvim_set_hl с параметром update обновляет отдельные атрибуты подсветки без затирания остальных;
- стиль bold և пользовательские символы в winborder;
- поддержка statusline в плавающих окнах;
- переименование .nvimlog в nvim.log;
- подсветка активного tabstop в сниппетах;
- Встроенный runtime для undotree;
- shelltemp=false по умолчанию;
- Spellfile хранится в stdpath data;
- максимум результатов поиска увеличен до 999;
- SSH configuration parser;
- синхронизированный вывод в терминале (mode 2026);
- терминал показывает exit code через виртуальный текст.
Neovim 0.12.1:
Корректирующий выпуск от 6 апреля 2026 с 26 исправлениями ошибок и одной новой возможностью — :restart переподключает все UI. Среди важных исправлений:
- :restart: наследование stderr на Unix, корректная обработка —headless;
- LSP: повторный запрос codeLens refresh, предпросмотр сниппетов, сброс версии document color;
- ui2: мерцание при входе в pager, некорректные ссылки на буфер, обновление spill indicator;
- Treesitter: выделение с unicode-символами в конце узла;
- vim.net: обработка архивных URL через tar/zip;
- vim.pack: использование uv.available_parallelism для вычисления числа потоков;
- Патчи безопасности Vim: обход модели безопасности через modeline, обход пути в zip.vim;
- Оптимизация vim.pos: использование nvim_buf_line_count вместо загрузки всех строк.
Աղբյուր: linux.org.ru
