Neovim в 2026: чем отличается и почему выбирают

Рейтинг: 66.7% · 13 голосов
Исчерпывающий курс по Vim и Neovim: модальное редактирование и грамматика (операторы, движения, текстовые объекты, точка-команда), регистры, метки, макросы, поиск и :substitute, :global, буферы/окна/quickfix, визуальный режим, конфигурация на Lua, маппинги, плагины (lazy.nvim), LSP, автодополнение (blink.cmp), Treesitter, fuzzy-поиск, Git, эргономика и антипаттерны. 34 главы, актуально на 2026 (Vim 9.1, Neovim 0.11/0.12).
Ответить
Аватара пользователя
Roman_Vim
Сообщения: 34
Зарегистрирован: 11 май 2026, 05:31

Neovim в 2026: чем отличается и почему выбирают

Сообщение Roman_Vim »

Оглавление курса (34)
  1. Философия Vim: модальное редактирование и почему это актуально в 2026
  2. Установка и выживание: первый запуск, режимы, как выйти
  3. Перемещение по тексту: движения как основа эффективности
  4. Базовое редактирование: вставка, удаление, копирование
  5. Грамматика Vim: операторы + движения = команды
  6. Текстовые объекты: оперируем структурой, а не символами
  7. Точка-команда и повторяемость: "один штрих, чтобы повторить"
  8. Регистры: продвинутая работа с буфером обмена
  9. Метки и прыжки: навигация по истории перемещений
  10. Поиск: /, ?, *, # и магия паттернов
  11. Замена :substitute и регулярные выражения Vim
  12. Команда :global - оружие массового редактирования
  13. Буферы, окна и вкладки: организация рабочего пространства
  14. Quickfix и location list: пакетная работа по всему проекту
  15. Навигация по файлам: netrw, fuzzy-поиск и проекты
  16. Макросы: автоматизация повторяющихся правок
  17. Визуальный режим и блочное редактирование
  18. Трюки режима вставки
  19. Свёртки, автодополнение и аббревиатуры (встроенные)
  20. Конфигурация с нуля: init.lua и разумные дефолты 2026
  21. Маппинги: leader, which-key и здравые привычки
  22. Скриптинг: основы Vimscript и Lua для Neovim
  23. Менеджеры плагинов: lazy.nvim и lazy-loading
  24. Neovim в 2026: чем отличается и почему выбирают (вы здесь)
  25. LSP в Neovim: умные возможности языка
  26. Автодополнение 2026: blink.cmp против nvim-cmp
  27. Treesitter: точная подсветка и структурное редактирование
  28. Fuzzy-поиск: Telescope, fzf-lua и snacks.picker
  29. Git внутри редактора: fugitive, gitsigns и lazygit
  30. Дистрибутивы, отладка и терминал: быстрый старт и интеграции
  31. Vim повсюду: IDE, браузер и shell
  32. Эргономика и антипаттерны: как не навредить себе и не застрять
  33. Рабочие рецепты, тренажёры и план обучения
  34. Шпаргалка-справочник: все ключевые команды одним списком
К этому моменту курса вы уже владеете грамматикой Vim, умеете писать конфигурацию на Lua (глава 20), настраивать маппинги (глава 21), скриптить (глава 22) и подключать плагины через lazy.nvim (глава 23). Все эти главы незаметно опирались на Neovim как на основной редактор. Настало время остановиться и честно ответить на вопрос, который висел в воздухе: а в чём, собственно, разница между Vim и Neovim, и почему почти весь современный материал курса написан про второй?

Это не вопрос вкуса или моды. За форком Neovim стоит десятилетие архитектурных решений, которые превратили "текстовый редактор с плагинами" в платформу для встраивания IDE-функций. В этой главе мы разберём, откуда взялся форк, какие у него были цели, чем он технически отличается от классического Vim, что нового принесли релизы 0.11 и 0.12, как Vim ответил языком Vim9script - и, главное, кому какой редактор реально нужен. Эта глава - концептуальный фундамент для всей части VI: следующие главы про LSP (25), автодополнение (26), Treesitter (27), пикеры (28) и Git (29) опираются именно на те возможности Neovim, о которых пойдёт речь здесь.

Откуда взялся Neovim: история и цели форка

Vim - проект Брама Моленаара, развивавшийся с 1991 года как улучшенная версия редактора vi. К началу 2010-х кодовая база Vim насчитывала сотни тысяч строк C, написанных с расчётом на совместимость с десятками платформ и терминалов, в том числе давно вымерших. Любое крупное изменение упиралось в одного мейнтейнера и риск что-нибудь сломать.

Neovim родился в 2014 году как форк именно из этого напряжения. Его цели были сформулированы прямо:
  • Упростить сопровождение - выкинуть легаси, навести порядок в коде, открыть дорогу контрибьюторам через распределённую разработку (а не модель "один человек принимает патчи").
  • Сделать расширяемость первоклассной - встроенный язык (Lua), асинхронность и программный API, чтобы плагины не блокировали редактор и могли управляться извне.
  • Отделить ядро от UI - редактор как сервер, к которому подключаются разные интерфейсы (терминальный, графический, встроенный в IDE) по протоколу RPC.
Важно понимать: Neovim сохранил совместимость с Vim на уровне модального редактирования, грамматики команд, Ex-команд и Vimscript. Всё, чему вы научились в частях I-IV, работает в обоих редакторах идентично. Расхождение проходит не по "как редактировать текст", а по "как редактор устроен внутри и что на нём можно построить".

Ключевые технические отличия

Встроенный Lua

Главное отличие - первоклассный Lua как язык конфигурации и плагинов. В Vim единственный родной язык скриптинга - Vimscript (его мы разбирали в главе 22). В Neovim рядом с Vimscript встроен интерпретатор LuaJIT, а весь редактор доступен через глобальный объект vim: опции через vim.opt, глобалы через vim.g, функции Vim через vim.fn, API через vim.api.

Почему это важно: Lua - полноценный язык программирования с таблицами, замыканиями, модулями и быстрым JIT-компилятором. Конфиг на Lua запускается быстрее, лучше структурируется и не упирается в синтаксические ограничения Vimscript. Именно поэтому канон 2026 года - init.lua, а не init.vim (см. главу 20). LuaJIT настолько быстр, что Neovim дополнительно кэширует скомпилированный байткод через vim.loader.enable(). Выигрыш сильно зависит от числа Lua-модулей в конфиге: на больших конфигах он может ускорить старт на десятки процентов, а на пустом конфиге эффект почти нулевой.

Асинхронность

В классическом Vim длинная операция (запрос к языковому серверу, индексация, сетевой вызов) блокировала редактор - курсор замирал до завершения. Vim позже добавил job/channel и таймеры, частично решив проблему, но асинхронность там осталась надстройкой.

В Neovim асинхронность встроена в ядро через событийный цикл libuv (тот же, что в Node.js). Плагины запускают фоновые процессы, делают сетевые запросы и обрабатывают события, не подвешивая ввод. Без этого фундамента не существовали бы быстрые движки автодополнения вроде blink.cmp (глава 26), реагирующие на каждое нажатие за единицы миллисекунд.

Встроенные LSP, Treesitter и DAP

Это, пожалуй, самая заметная для пользователя разница.
  • LSP (Language Server Protocol) - клиент языковых серверов встроен прямо в ядро Neovim. Это даёт "умные" возможности - переход к определению, переименование, диагностику, code actions - без сторонних плагинов вроде coc.nvim. Оговорка: встроенный клиент покрывает не всё "из коробки" - для удобного автодополнения и форматирования исторически всё равно нужны omnifunc (CTRL-X CTRL-O) или сторонние движки вроде blink.cmp/conform.nvim (в 0.12 появилась нативная опция 'autocomplete', но пока экспериментальная). Подробно настройку LSP разбираем в главе 25.
  • Treesitter - инкрементальный парсер, строящий синтаксическое дерево (AST) кода. Он даёт точную подсветку (по структуре, а не по регуляркам), структурные текстовые объекты и сворачивание. Подробно - в главе 27.
  • DAP (Debug Adapter Protocol) - поддержка отладчиков через плагин nvim-dap, использующий встроенную асинхронность. О терминале и отладке - в главе 30.
В Vim ничего из этого нет на уровне ядра. Эквивалент собирается из сторонних плагинов (coc.nvim, ALE, vim-lsp), что работает, но сложнее и тяжелее.

API и RPC

Neovim выставляет наружу программный API через msgpack-RPC. Любой внешний процесс - на Python, Rust, JavaScript - может управлять редактором: читать буферы, ставить курсор, создавать окна. На этом построена интеграция Neovim в другие среды: расширение vscode-neovim встраивает настоящий Neovim в VSCode, а IDE-плагины используют его как движок (подробнее о "Vim повсюду" - в главе 31).

Floating windows

Neovim умеет рисовать плавающие окна (floating windows) - прямоугольники, парящие поверх текста вне обычной сетки сплитов. На них держится почти весь современный UI: всплывающие подсказки документации (hover), меню автодополнения, окна диагностики, попапы which-key, интерфейсы пикеров вроде Telescope. В классическом Vim аналога floating windows на уровне ядра нет (есть popup-окна, но они ограниченнее).

Сводная таблица отличий

Код: Выделить всё

Возможность                  |  Vim 9.1                     |  Neovim 0.12
-----------------------------+------------------------------+--------------------------
Язык конфигурации            |  Vimscript / Vim9script      |  Lua (+ Vimscript)
Асинхронность                |  jobs/channels (надстройка)  |  libuv в ядре
Встроенный LSP-клиент        |  нет                         |  да
Встроенный Treesitter        |  нет                         |  да (парсеры в комплекте)
API / RPC                    |  ограниченный                |  msgpack-RPC, полный
Floating windows             |  popup-окна                  |  да, полноценные
Менеджер плагинов в ядре     |  packages (без UI)           |  vim.pack
Нативный HTTP                |  нет                         |  vim.net.request()
Время старта (ориентир)      |  ~28 мс                      |  ~12 мс
Память в простое (ориентир)  |  ~12 МБ                      |  ~18 МБ
Обратите внимание на последние две строки: Neovim стартует быстрее, но Vim экономнее по памяти. Это не случайность, а следствие архитектуры - встроенный LuaJIT и провайдеры стоят оперативки. Важная оговорка: цифры времени старта и памяти здесь - грубые ориентиры для дефолтных сборок, а не воспроизводимые бенчмарки. Реальные значения сильно зависят от конфигурации, терминала и опций сборки; для голого vim -u NONE против nvim --clean числа будут заметно другими.

Состояние версий в 2026: что нового в 0.11 и 0.12

Neovim 0.11 (март 2025): нативный LSP без обвязки

Релиз 0.11 переписал то, как настраивается LSP. Раньше канон был require('lspconfig').<server>.setup{} - то есть для базовой работы языкового сервера требовался плагин nvim-lspconfig. В 0.11 появились нативные высокоуровневые API:
  • vim.lsp.config('clangd', {...}) - задаёт конфигурацию сервера;
  • vim.lsp.enable({'clangd', 'lua_ls'}) - активирует серверы для их типов файлов.
Более того, Neovim теперь автоматически подхватывает файлы ~/.config/nvim/lsp/<server>.lua из runtimepath - один файл на сервер, без единого большого setup-блока. Плагин nvim-lspconfig не исчез, но превратился в каталог готовых дефолтов (cmd, root_markers, filetypes) поверх нативного API, а не в обязательную обвязку. Старый setup{} официально помечен как legacy и будет удалён в nvim-lspconfig v3.0.0.

Вместе с этим в 0.11 появились дефолтные LSP-маппинги прямо из коробки - раньше каждый писал их сам:

Код: Выделить всё

Клавиша          |  Действие
-----------------+---------------------------------------
grn              |  переименование (rename)
gra              |  code action
grr              |  список ссылок (references)
gri              |  переход к реализации (implementation)
grt              |  переход к типу (type definition)
gO               |  символы документа (document symbol)
K                |  hover-документация
CTRL-S (insert)  |  подсказка сигнатуры
[d / ]d          |  навигация по диагностике
Ещё одно важное изменение 0.11: виртуальный текст диагностики стал opt-in. Раньше ошибки показывались текстом справа от строки автоматически - теперь это нужно явно включить:

Код: Выделить всё

vim.diagnostic.config({ virtual_text = true })
-- или более компактный вариант, разворачивающий диагностику строками:
vim.diagnostic.config({ virtual_lines = { current_line = true } })
После апгрейда до 0.11 многие решили, что "диагностика сломалась" - на самом деле её просто нужно включить. Подробнее о диагностике - в главе 25.

Neovim 0.12 (29 марта 2026): менеджер плагинов и автокомплит в ядре

Релиз 0.12 - крупный шаг к тому, чтобы базовый IDE-функционал работал вообще без плагинов:
  • vim.pack - встроенный менеджер плагинов на Lua, без внешних зависимостей. API: vim.pack.add(), vim.pack.update(), vim.pack.del(), vim.pack.get(). Версии задаются полем version (ветка, тег, коммит или диапазон vim.version.range('2.x')), есть lockfile nvim-pack-lock.json, который коммитится в репозиторий. Важная оговорка: у vim.pack нет ленивой загрузки по event/ft/cmd - её приходится писать руками через autocmd. Поэтому на больших конфигах (30+ плагинов) lazy.nvim пока остаётся предпочтительнее (см. главу 23).
  • Нативный автокомплит в insert-режиме через опцию 'autocomplete' - базовое автодополнение работает без nvim-cmp/blink.cmp. Помечен как экспериментальный.
  • vim.net.request() - нативные HTTP-запросы. Плагинам больше не нужно шеллить curl; работает и :edit https://....
  • :restart - перезапуск Neovim без выхода, с переподключением UI.
  • Интерактивная :lsp - управление LSP-клиентами; заменяет функциональность команд плагина nvim-lspconfig (:LspInfo/:LspRestart/:LspLog), которые никогда не были частью ядра. Добавлен autocmd LspProgress.
  • Treesitter в ядре - парсеры и подсветка для распространённых языков включены по умолчанию, Markdown подсвечивается из коробки. Отдельный плагин nvim-treesitter для базовой подсветки больше не обязателен (детали и нюансы миграции - в главе 27).
  • Расширенный LSP - selectionRange, inlineCompletion, linkedEditingRange, documentLink, семантические токены только для видимой области.
  • Экспериментальный UI2 - редизайн сообщений и командной строки, убирающий промпты "Press ENTER".
  • Встроенные :Undotree (packadd nvim.undotree) и :DiffTool (packadd nvim.difftool).
Ключевая мысль: к 2026 году Neovim вобрал в ядро то, что раньше было плагинами. Конфиг можно делать заметно легче - но 'autocomplete' и ui2 ещё помечены экспериментальными, и закладываться на них как на стабильные в продакшен-конфиге рано.

Ответ Vim: Vim9script

Vim не стоял на месте. Главный его ответ на эпоху Neovim - Vim9script, новый диалект скриптинга, призванный решить две проблемы старого Vimscript: медлительность и архаичный синтаксис.

Vim9script компилирует команды функции в инструкции при первом вызове, давая прирост скорости в 10-100 раз. Синтаксис приближен к JavaScript/TypeScript/Java:

Код: Выделить всё

vim9script
# комментарий через #, а не "
var count = 0          # var вместо let
def Greet(name: string): string
  return $"Hello, {name}"
enddef
echo Greet('world')
В Vim 9.1 Vim9script получил классы и объекты, что позволяет структурировать крупные плагины почти как на типизированных языках. Туда же добавили команду :defer (гарантированная очистка ресурсов при выходе из функции - аналог defer в Go), виртуальный текст в буфере, плавный скролл и встроенный плагин EditorConfig. По сути 9.1 - bugfix-релиз с сотнями фиксов и этими целевыми улучшениями.

Что важно понимать честно: Vim9script отвечает на критику Vimscript "он медленный и уродливый", но не закрывает архитектурные отличия. В Vim по-прежнему нет встроенного LSP-клиента, Treesitter и Lua; асинхронность остаётся надстройкой. Vim9script делает написание Vim-плагинов приятнее, но не превращает Vim в платформу уровня Neovim. Это две разные стратегии: Vim улучшает свой язык, Neovim меняет архитектуру.

Состояние экосистемы и сообщества

Цифры 2026 года говорят за себя. Репозиторий Neovim - около 88 тысяч звёзд на GitHub (рост ~15% за год), порядка 85 000 коммитов и ~1450 контрибьюторов. Репозиторий Vim растёт менее чем на 3% в год - это зрелый, стабильный, но не бурно развивающийся проект.

Дистрибутив LazyVim достиг ~1.2 миллиона загрузок и стоит, по оценкам, за ~45% всех Neovim-конфигов - это самая популярная готовая сборка для новичков. Подробно дистрибутивы (LazyVim, kickstart.nvim, NvChad, AstroNvim) разбираем в главе 30.

Практический вывод: основная масса новых плагинов, гайдов и инструментов 2026 года пишется под Neovim. Если вы выбираете редактор "на вырост" под современный IDE-подобный workflow - импульс сообщества на стороне Neovim.

Совместимость конфигов

Частый вопрос при переезде: "придётся ли переписывать конфиг?". Ответ - зависит от направления и от того, что в конфиге.

Из Vim в Neovim. Neovim умеет читать классический ~/.vimrc и понимает Vimscript. Базовый конфиг с опциями (set number, маппинги, autocmd) обычно работает почти без правок. Расхождения начинаются на:
  • путях (Neovim использует ~/.config/nvim/ и init.lua/init.vim, а не ~/.vimrc);
  • провайдерах (Python/Ruby/clipboard у Neovim настраиваются иначе);
  • плагинах, завязанных на Vim-специфичные механизмы.
Из Neovim в Vim. Обратная совместимость гораздо хуже: всё, что написано на Lua, использует vim.lsp, Treesitter, floating windows или Neovim API, в Vim просто не запустится. Lua-конфиг - улица с односторонним движением.

Практическая рекомендация: не пытайтесь поддерживать один конфиг для обоих редакторов. Если работаете в обоих - держите минимальный портируемый vimrc для Vim (опции + базовые маппинги на Vimscript) и полноценный init.lua для Neovim.

Честное сравнение: кому хватит Vim, кому нужен Neovim

Это не "что лучше", а "что под вашу задачу".

Vim вам подходит, если:
  • Вы много редактируете на серверах, в контейнерах и чужих окружениях, где нельзя ставить софт. Vim почти везде предустановлен, легче по памяти и не требует провайдеров.
  • Ваш текущий Vim-конфиг работает и устраивает - переезд ради переезда не нужен.
  • Вам не нужна полноценная IDE внутри редактора: правка конфигов, текстов, быстрые сессии.
  • Вы цените стабильность и минимализм без зоопарка плагинов.
Neovim вам нужен, если:
  • Вы хотите IDE-возможности (LSP, Treesitter, умное автодополнение, отладка) с минимумом боли.
  • Вы пишете конфиг и плагины и предпочитаете Lua архаичному Vimscript.
  • Вы хотите быть в актуальной экосистеме 2026 года, где пишется большинство новых инструментов.
  • Вы встраиваете Vim-движок в другие среды (VSCode, IDE) через RPC.
Практичная стратегия 2026: Neovim как основной редактор там, где вы контролируете окружение, плюс сохранённая беглость в Vim для работы на серверах. Это лучшее из обоих миров - и именно поэтому весь навык модального редактирования из предыдущих частей курса так ценен: он переносится между ними без изменений.

Лучшие практики 2026
  • Настраивайте LSP через нативные vim.lsp.config/vim.lsp.enable и каталог lsp/, а не через старый require('lspconfig').setup{}. Это убирает зависимость от плагина для базовой работы. Не смешивайте оба подхода - будут дублирующиеся/конфликтующие конфиги.
  • Явно включайте "тихие" дефолты. После 0.11 виртуальный текст диагностики выключен - включайте vim.diagnostic.config({ virtual_text = true }) (или virtual_lines). Для Treesitter из main-ветки подсветку и фолды тоже надо включать вручную (детали - глава 27). Важно для миграции: к 2026 году nvim-treesitter разделён на две ветки - старая master архивирована (legacy, новых фич не получает), актуальна именно main с переработанным API. Если в гайдах встречается старый require('nvim-treesitter.configs').setup{} - это код для архивированной master.
  • Не спешите мигрировать с lazy.nvim на vim.pack. vim.pack стабилен, но без ленивой загрузки по event/ft/cmd. Для конфигов в 30+ плагинов lazy.nvim держит старт быстрым; vim.pack оправдан для умеренных конфигов, ценящих нулевые зависимости.
  • Новичкам - LazyVim как рабочая основа, kickstart.nvim параллельно для обучения. Живите на готовом дистрибутиве, но в свободное время разберите минимальный однофайловый kickstart.nvim, чтобы не зависеть от "магии" дистрибутива.
  • Опытным Vim-юзерам - не мигрировать без причины. Если Vim-конфиг работает, переезд не обязателен. На серверах держите беглость в Vim.
  • Новые Vim-скрипты пишите на Vim9script - с var, классами (9.1) и :defer. Это даёт и скорость, и читаемость.
  • Включайте vim.loader.enable() в начале init.lua для кэша Lua-байткода. На больших Lua-конфигах это может ускорить старт на десятки процентов; на пустом конфиге эффект почти не заметен.
Частые ошибки
  • Думать, что Neovim несовместим с Vim. Модальное редактирование, грамматика, Ex-команды и Vimscript работают в обоих. Расхождение - в архитектуре, а не в редактировании текста.
  • Ждать, что виртуальный текст диагностики включён по умолчанию в 0.11+. Он стал opt-in. Включайте явно.
  • Продолжать использовать require('lspconfig').xxx.setup{} на 0.11+. Это legacy-путь, который выдаёт warning и будет удалён в v3.0.0. Переходите на vim.lsp.config/vim.lsp.enable.
  • Ожидать, что vim.pack заменит lazy.nvim один-в-один. У него нет ленивой загрузки и packspec - на больших конфигах старт деградирует.
  • Пытаться собрать на Vim полноценную IDE и удивляться сложности. Без нативных LSP/Treesitter/Lua это упирается в сторонние плагины (coc.nvim и т. п.). Это возможно, но это не "из коробки".
  • Тащить старый стек по инерции на 0.12. Часть функций (Treesitter-подсветка, базовый LSP, автокомплит) уже в ядре - конфиг можно облегчить. Но не закладывайтесь на экспериментальные 'autocomplete' и ui2 как на стабильные.
  • Пытаться поддерживать единый Lua-конфиг для Vim и Neovim. Vim не исполняет Lua с Neovim API. Держите конфиги раздельно.
Упражнения
  1. Проверьте свою версию. Запустите nvim --version и vim --version (если Vim установлен). Определите мажорную версию Neovim. Если это не 0.11+, прикиньте, какие фичи из главы вам недоступны.
  2. Исследуйте нативный LSP-каталог. Создайте файл ~/.config/nvim/lsp/lua_ls.lua с минимальной конфигурацией и активируйте сервер через vim.lsp.enable({'lua_ls'}) в init.lua. Откройте .lua-файл и убедитесь через :lsp (или :LspInfo на 0.11), что клиент подключился. Полная настройка - в главе 25.
  3. Включите диагностику осознанно. Добавьте в конфиг vim.diagnostic.config({ virtual_text = true }), перезапустите Neovim, внесите синтаксическую ошибку в код и убедитесь, что текст ошибки появился справа от строки. Затем поэкспериментируйте с virtual_lines.
  4. Сравните старт. Запустите nvim --startuptime startup.log и откройте полученный лог. Найдите самые медленные строки. Затем добавьте vim.loader.enable() первой строкой init.lua и сравните время повторно.
  5. Попробуйте Vim9script. В Vim (не Neovim) создайте файл с vim9script, объявите функцию через def/enddef с типизированными параметрами и вызовите её. Сравните синтаксис с тем, что вы писали на Vimscript в главе 22.
  6. Оцените свой кейс. Письменно ответьте на вопросы: где вы редактируете чаще всего (локально / по SSH / в контейнерах)? Нужны ли вам LSP и Treesitter ежедневно? На основе раздела "Честное сравнение" сформулируйте, какой редактор основной для вас и почему.
Главное из главы
  • Neovim - форк Vim 2014 года с целями: упростить сопровождение, сделать расширяемость первоклассной (Lua, async, API/RPC) и отделить ядро от UI. Модальное редактирование и грамитика полностью совместимы.
  • Ключевые отличия от Vim: встроенный LuaJIT, асинхронность на libuv в ядре, встроенные LSP/Treesitter/DAP, msgpack-RPC API и floating windows.
  • Neovim 0.11 принёс нативный LSP (vim.lsp.config/vim.lsp.enable, каталог lsp/), дефолтные LSP-маппинги (grn/gra/grr/gri/K) и сделал виртуальный текст диагностики opt-in.
  • Neovim 0.12 (март 2026) добавил в ядро менеджер плагинов vim.pack, нативный автокомплит, vim.net.request(), :restart, интерактивную :lsp и Treesitter по умолчанию - но часть фич экспериментальна.
  • Vim ответил Vim9script (скорость в 10-100 раз, классы в 9.1, :defer), но это улучшение языка, а не архитектуры: нативных LSP/Treesitter/Lua в Vim нет.
  • Выбор честный: Vim - для серверов, минимализма и "оно уже работает"; Neovim - для IDE-возможностей, Lua и актуальной экосистемы. Практика 2026 - оба: Neovim основной, Vim для серверов.
  • Конфиги совместимы в одну сторону: Vimscript-конфиг чаще всего едет в Neovim, Lua-конфиг в Vim - нет.
👍2 ❤️3 🔥 😄 🤔
✔ Лучший ответ сформирован автоматически — clickhouse87
Roman_Vim писал(а):LuaJIT настолько быстр, что Neovim дополнительно кэширует скомпилированный байткод через vim.loader.enable() поставил эту строку первой в init.lua, прогнал nvim --startuptime до и после - старт упал с ~95мс до ~70 на моём конфиге (плагинов под 40). не десятки процентов конечно но ощутимо. на голом конфиге да, разницы ноль
Перейти к ответу →
Аватара пользователя
tcp95
Сообщения: 1
Зарегистрирован: 04 июн 2026, 14:56

Re: Neovim в 2026: чем отличается и почему выбирают

Сообщение tcp95 »

о, наконец дошло почему у меня после апгрейда на 0.11 диагностика 'пропала'. я реально думал что нвим сломался и откатывался назад. оказалось просто virtual_text стал opt-in, добавил vim.diagnostic.config({ virtual_text = true }) и всё вернулось. спасибо что разжевали, в офиц ченджлоге это как-то мимо меня прошло
👍1 ❤️ 🔥 😄 🤔
Аватара пользователя
clickhouse87
Сообщения: 1
Зарегистрирован: 30 май 2026, 10:02

Re: Neovim в 2026: чем отличается и почему выбирают

Сообщение clickhouse87 »

✔ Лучший ответ — сформирован автоматически
Roman_Vim писал(а):LuaJIT настолько быстр, что Neovim дополнительно кэширует скомпилированный байткод через vim.loader.enable()
поставил эту строку первой в init.lua, прогнал nvim --startuptime до и после - старт упал с ~95мс до ~70 на моём конфиге (плагинов под 40). не десятки процентов конечно но ощутимо. на голом конфиге да, разницы ноль
👍2 ❤️ 🔥 😄 🤔
Аватара пользователя
kikomas
Сообщения: 1
Зарегистрирован: 27 май 2026, 08:37

Re: Neovim в 2026: чем отличается и почему выбирают

Сообщение kikomas »

вопрос про vim.pack - а как вообще без ленивой загрузки жить если плагинов много? у меня сейчас lazy.nvim и половина грузится по ft/event. правильно понимаю что на vim.pack это всё руками через autocmd переписывать придётся? тогда смысла переезжать пока нет вообще
👍1 ❤️2 🔥1 😄 🤔
Аватара пользователя
wasmsmith
Сообщения: 1
Зарегистрирован: 02 июн 2026, 15:57

Re: Neovim в 2026: чем отличается и почему выбирают

Сообщение wasmsmith »

затык был с lsp на 0.12, писал require('lspconfig').lua_ls.setup{} по старому гайду и ловил warning. перешёл на vim.lsp.config + vim.lsp.enable, плюс закинул конфиг в ~/.config/nvim/lsp/lua_ls.lua отдельным файлом - стало сильно чище, один файл на сервер
👍1 ❤️1 🔥 😄 🤔
Аватара пользователя
denodev
Сообщения: 1
Зарегистрирован: 07 июн 2026, 06:12

Re: Neovim в 2026: чем отличается и почему выбирают

Сообщение denodev »

коротко - лучшее в главе это честная таблица где вим экономнее по памяти а нвим быстрее стартует. а то обычно пишут будто нвим во всём лучше. у меня на серверах так и осталось - вим там где софт не поставишь, нвим локально
👍 ❤️ 🔥 😄 🤔
Ответить
← Предыдущая глава
Менеджеры плагинов: lazy.nvim и lazy-loading
Следующая глава →
LSP в Neovim: умные возможности языка

Все главы курса «Vim и Neovim: модальное редактирование от основ до современного Neovim»

Поделиться темой: ✈ Telegram VK

Вернуться в «Vim и Neovim: модальное редактирование от основ до Neovim 2026»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей