Всем привет, меня зовут Александр, я являюсь фронтенд разработчиком более 4-х лет. В этой статье хочу поделится с вами почему решил перейти с горячо любимого и удобного и комфортного vscode в новый редактор neovim. Что из этого получилось давайте посмотрим дальше.

Что такое neovim и причины перехода на него

Думаю, что все сталкивались с этими текстовыми редакторами, когда решали мердж конфликты или рибейзили ветки в своих проектах. Да, это были редакторы nano или vim. Так вот, редактор neovim — это форк от редактора vim с улучшенными доработками. Если кого-то интересует более подробное описание — вы можете найти его на сайте самого редактора neovim.

Причины перехода на neovim?

В данный момент я использую в качестве основного редактора VsCode для работы во frontend разработке и редактор заточен чисто под нее. Работе с ним я столкнулся со следующими проблемами: долго грузит обновление маппингов между переключениями в ветках гитхаба, когда что-то меняешь в файле юай компонента, то также долго обновляется информация об изменении в файле; если это длится целый день — то тратится много времени в пустую на ожидание. Еще одной проблемой стала — это работа с микросервисами: при наличии в проекте более одного typescript файла, то редактору тяжело их различить и он может не успевать анализировать информацию пока пишется код, а это пропущенные ошибки, и тяжелая проверка кода на глаз. Да, можно каким-то образом это настроить, но зачем с этим связываться, если есть доступные решения, которые легко с этим справляются. Чтобы устранить вышеупомянутую проблему с микросервисами приходится после каждого переключения между проектами перезагружать редактор.

Вышеописанные проблемы не являются проблемой для neovim и решаются из-под коробки. Еще одним большим плюсом использования neovim будет это возможность работать на сервере, где нет графической оболочки и ограниченные ресурсы.

Есть еще одна проблема VsCode, которая меня побуждает переходить с него — это тяжело в нем работать если в дальнейшем планируешь использовать два и более языка. В свое время, перед тем как полностью уйти на js на стороне бекенд разработчика я использовал язык php. И вот совместить, чтобы VsCode корректно работал в двух языках, по моей памяти, было тяжело и больно. А если, например, придется перейти на другой язык, что тогда придется делать? Заново настраивать редактор или переучиваться на другой редактор? Учитывая, что для работы языка нужен установить несколько расширений (размышления по решению описанной проблемы будут дальше в статье), я не думаю, что с neovim будут такие же проблемы, как с VsCode, когда работал с двумя языками программирования.

Таким образом получается, что если я перейду на neovim, то получу универсальный редактор, который смогу настроить под любую разработку и мне не придется переучиваться каждый раз, помимо этого он не требует большого количества ресурсов для работы. В моем понимании такая игра стоит свеч и стоит попробовать перейти на него.

С чего стоит начать переход и как это лучше сделать?

Когда я начал изучать для себя вопрос изучения этого редактора, то обнаружил, что этого материала очень много, но нет ничего, что описывало бы, как следует изучать этот редактор и с чего следует начать.

Свой путь в изучении я начал с поиска настройки конфигурационного файла для vim. На просторах русского ютуба ничего нормального я не нашел. Были только видео из серии общее объяснение конфига со вставкой крупного блока настроек и дальше разбирайся сам, как хочешь, самостоятельно. Меня, как человека, который только начинает изучать тему этого редактора, такие видео вводят в большее заблуждение. А вот на просторах английского ютуба находил много видео, в которых авторы подробно в уроках объясняют, как что работает, и с нуля полностью пишут конфиг под редактор. Такие видео я могу разделить на три категории:

  1. Показывают и подробно объясняют из чего состоит простаясборка, как она работает;

  2. Написание большого конфига с нуля, но без подробных объяснений;

  3. Объяснение конкретногоплагина, его работы и настройки.

Из вышеописанных категорий видео советовал начинал свой путь строго по этому порядку. Первая категория вам даст понимание, как работает neovim и нужно ли вам тратить время на его изучение и настройку. Вторая позволит сделать свою базовую конфигурацию или взять за основу готовое решение, чтобы в последующем будущем переделать его под себя. Ну и третья позволит разобраться как работает тот или иной плагин, если возникли по нему.

Также перед просмотром видео по настройке vim я бы посоветовал просмотреть и изучить команды для его управления и, если в этом есть необходимость, язык lua, который используется для написания конфигов.

Здесь сделаю небольшое отступление, прежде чем начать изучение и настройку vim вам необходимо будет смирится с тем, что сразу на него перейти не получится и потребуется время, чтобы это сделать, поэтому перед началом действия держите у себя в голове эту особенность.

В среднем на изучение и переход на neovim нужно закладывать минимум 1.5-2 месяца при ежедневном использовании редактора два-три часа работы в нем.

Работа с картинками в neovim

Одним из самых сложных вопросов для меня было отображение картинок в терминале при запущенном neovim. Для данной цели мною был выбрал плагин image.nvim. Для его работы мне пришлось дополнительно установить несколько дополнительных пакетов, таких как luarocks, imagick, мультиплексор kitty, который включает в себя графический протокол для работы картинками в терминале и т. п. Сейчас подробно я в это не буду углубляться, просто хотел показать, что показ картинок в терминале также есть.

Что необходимо знать прежде чем переходить на редактор neovim?

Командные оболочки — это командные оболочки, которые позволяют управлять набором команд unix системы. В данный момент существует три таковых оболочки: bash, zsh, fish. Bash стоит по умолчанию в большинстве дистрибутивов linux, zsh является одним из самых популярных командных оболочек и имеет утилиту для его настройки под названием «Oh My Zsh», fish — еще одна оболочка, является самой удобной, но и самой сложной оболочкой в изучении. В данный момент времени, я остановился на zsh, потому что он используется у большинства блогеров, по нему много документации и ответов на вопросмы, есть утилита, которая разворачивает эту командную оболочку и поставить ее в системе по-умолчанию. Ее работай удовлетворен и дальше планирую пользоваться.

Мультиплексоры — это программы для эмуляции работы терминала. В данный момент я не могу отдать предпочтение какой либо из них, но в текущий момент времени мне в большинстве случаев хватает стандартного терминала в системе. В будущем предполагаю, что необходимо будет переехать на tmux и kitty. Первый позволяет удобно в несколько окон работать с запущенными процессами, второй отображает картинки. Уточнение, картинки отображаются только kitty. Дополнение, для маков есть свой отдельный мультиплексор iterm2, но т. к. у меня нет мака, то работу в нем не рассматриваю.

Едем далее, для работы с neovim потребуется установить шрифт из семейства Nerd font для более удобной работы, а также дополнительные утилиты в зависимости от пакета, который используется.

Packer, Lazy — это пакетные менеджеры для плагинов, которые используются для расширения функционала neovim. Дополню здесь, что сейчас актуальным считается пакетный менеджер Lazy, Packer уже устарел и все плагины на нем переписываются на ранее упомянутый пакетный менеджер. Для комфортной работы редакторе необходимо будет разобраться как установить пакетный менеджер Lazy и добавлять в него нужные плагины, помимо этого нужно будет понимать, как запускать плагины с нужными конфигами и как их выставлять для того или иного плагина. В основном все настройки разработчики выносят в файл readme, либо, если плагин очень популярен, но с замудренной настройкой, по нему будет снято много видеороликов, в рамках которых показано, как настроить этот плагин.

Treesitter — один из основных плагинов neovim для работы с кодом. Его работа заключается в том, что он подсвечивает стилистику языка. Под стилистикой я понимаю, что подсвечиваются разным цветом функции, константы, условные конструкции языка и т. п.

Mason — один из основных плагинов neovim для работы с lsp, линтеров, форматиеров. По моему мнению — это наиболее важный плагин, который делает вышеупомянутый редактор наиболее прогрессивным в данный момент времени. При работе с данным плагином нужно обращать внимание на то, что с некоторыми пакетами этого менеджера требуется устанавливать дополнительные пакеты из сторонних пакетов.

Lsp — language server protocol, языковой серверный протокол позволяет редактору напрямую общаться с языковым сервером, получать от него ошибки и подсвечивать их в коде и много чего еще. Такая технология используется в VsCode и neovim, а также в других редакторах.

Neotree — один из основных плагинов neovim, работает в качестве файлового менеджера.

Почему сделать локальную копию этого редактора не получится?

Изначально, когда я хотел перейти на этот редактор, у меня было желание написать редактор под себя, скомпилировать в какой-либо форме и переносить из системы в систему. Когда у меня получилось настроить полученное решение под все свои запросы и начал думать, как это решение сделать локальным, то я понял, что это не получится, потому что все тянется из разных менеджеров. Здесь можно задать вопрос, а почему бы не настроить все эти пакетные менеджеры, чтобы они тянули данные из локальных источников? Да, это можно сделать, но перед тем, как это сделать, давайте посмотрим, что придется настроить:

  • lazy — по документации,необходимо указывать все пути к локальным папкам с плагинами, а их может быть десятки, а то и сотни. Если перейти к сути, то необходимо взять исходники, например возьмем форк nvim lazyvim, и переписать их, чтобы они тянули все плагины из локальных файлов;

  • mason — здесь вообще не понятно, как можно перенастроить этот пакетный менеджер, если такое вообще возможно, а это обозначает, что придется самостоятельно настраивать все необходимое для работы lsp, линтеров, претиеров и т. п.

  • Luarocs, npm и прочие менеджеры пакетов я вообще молчу.

Как видим это затрагивает очень большой пласт работы, который того не стоит. Если будут проблемы с доступом к ним, то в будущем планирую искать обходные пути, которые позволят решить возникшие проблемы в будущем.

Плюсы и минусы neovim

Давайте теперь пробежимся по плюсам и минусам текстового редактор neovim. Начнем с плюсов:

  • достаточно один раз настроить и после этого переносить конфигурационные файлы с одной системы на другую, все пакеты и плагины подтянутся самостоятельно;

  • быстрее и стабильней работает, по сравнению с другими современными тестовыми редакторами, например VsCode и ide от Jetbrains;

  • может работать с большими файлами данных.

Минусы

  • при переучивании с другого редактора тяжело по началу переходить, потому что другой подход к работе, проблема решается в течении 1.5-3 месяцев активного использования neovim в своей работе, достаточно будет даже использовать его в рамках петпроектов, в качестве эксперимента: понравится или нет;

  • агрессивная политика обновления плагинов, которая заставляет, практически всегда, устанавливать последние версии; с этой проблемой ничего нельзя сделать, ее просто нужно принять, как данность в этом редакторе.

Выводы

В данный момент времени, несмотря на все минусы neovim, мне кажется, что если перетерпеть и переучится на этот текстовый редактор, то, в моем случае, я получаю больше плюсов для себя чем минусов, описанных выше.

Комментарии (19)


  1. gadzhikuliev
    12.05.2025 20:31

    А как Вам Zed, не пробовали?


    1. Nurked
      12.05.2025 20:31

      Я вим выучил ещё в 1999 году. Вернее, тогда он ещё был vi. Я был просто, как тогда говорили кул][ацкером. (эээх, были времена.)

      Как бы то ни было, выходить из vim умею, и спокойно в нём редактирую конфиги (а иногда и хот-деплою фиксы на файлы javascript 10-ти летней давности на удалённых серверах).

      Но, сколько раз я не пытался пользоваться vim/neovim для работы с кодом - мне не удавалось. Хотя, от VSCode меня коробило дико. В 2018 году VSCode была очень-даже-себе милым редактором. Но потом, как и большинство продуктов от Microsoft, она начала обрастать абсолютно ненужным функционалом. Мало того, что телеметрия уходила мегабайтами, так прикол заключался в том, что для комфортной разработки нужно было устанавливать плагины, а они были кем только ни писаны. Там и слон местами не валялся, а кое где и конь в посудную лавку заходил. Последнее время я много работал с VUE, и когда сохранение на диске файла начало занимать 30 секунд я начал подвывать.

      У меня был хороший ноут, всё работало на Ubuntu Linux. Относительно старый процессор, но 32 гига памяти. Отличная печатная машинка.

      В какой-то момент мне стало совсем плохо, и я открыл для себя VSCodium. Те же яйца, только в профиль. Минус телеметрия. Плагинов чуть поменьше, но большая часть того, что мне нужно было, присуствовало. Хотя, со временем и он начинал нещадно притормаживать.

      В попытке найти новую землю обетованную я обернулся в сторону kitty/Neovim/LazyVIM. Старался я сильно, но не прокатило. В основном я пользуюсь клавой, но вот когда надо (действительно надо) мышъ, я попадал в полный простой. Надо было идти и держать открытой VSCode только потому что мне надо было смёрджить какой-то особо упоротый коммит.

      Потом я случайно нашёл zed.dev.

      И я был в шоке.

      1. Он полностью написан на расте.

      2. Он написан командой, которая писала Atom, они знали, что делать.

      3. Он неимоверно быстрый по сравнению с VSCode.

      158 Мега-бля-байт. Ладно, в системе в списке показывает 1.5 гига. Это при том, что у меня 4 проекта щас открыто в нём.
      158 Мега-бля-байт. Ладно, в системе в списке показывает 1.5 гига. Это при том, что у меня 4 проекта щас открыто в нём.

      Да, я положил на все те плагины, которые доустановила VSCode. Они мне стали не нужны, потому что я мог сделать следующее:

      1. Я мог открыть любой файл моментально.

      2. Я мог сохранить любой файл моментально.

      3. Я мог использовать все сочетания клавиш из VSCode.

      Изначально мне не понравилось только то, что в Zed полностью отсутствовали инструменты git. Обычно я коммичу из консоли руками, но когда надо было сделать заковыристый merge, то я с неохотой открывал vscode.

      Но сейчас в zed и это добавили, так что про это можно не плакаться.

      Но самое главное в zed это не всё это.

      Более того, Зед умеет ваши VIM-шорткаты, и VIM-mode. Так что если у вас сильный vi головного мозга, то можно и vim всё сделать.

      Самое главное в том, что zed отлично работает со всеми ИИ всех мастей и пород. Его можно присобачить ко всему, включая локальные модели на ollama. И, боже мой, насколько-же это удобный интерфейс. Ты открываешь окошко, подгружаешь в него контекст, общаешься с моделью по поводу рефакторинга того или иного куска кода, а потом выбираешь этот код, и с помощью Ctrl+Enter редактируешь всё это дело в виде отличного diff, так что можно хорошо проверить, что там насрала тебе в код модель.

      Модели переключаются на лету, контекст можно менять, и всё сохраняется в историю. (Конечно, они продают свою, чуть более дешёвую версию, Claude-3.7. Антропик - это их любимый бэк, и они сами через него пишут много чего.)

      Более того, он сделан аккуратно, и не лезет поперёк батьки в пекло со своими придумываниями, а тихо ждёт своей очереди.

      Короче, после того, как я купил новый ноутбук, я поставил только Zed, и спокойно живу на нём. VScode даже и не пахнет, она мне не требуется вообще.


      1. gadzhikuliev
        12.05.2025 20:31

        Ух, какой развёрнутый ответ. Спасибо!


      1. cmyser
        12.05.2025 20:31

        Плюсую! Зед Ван лав !


      1. rusher
        12.05.2025 20:31

        это vscode сам так жрет? или же всякие lsp? Если второе то переход на другой редактор особого выигрыша не даст.


  1. baldr
    12.05.2025 20:31

    долго грузит обновление маппингов между переключениями в ветках гитхаба, когда что-то меняешь в файле юай компонента, то также долго обновляется информация об изменении в файле; если это длится целый день — то тратится много времени в пустую на ожидание. Еще одной проблемой стала — это работа с микросервисами: при наличии в проекте более одного typescript файла, то редактору тяжело их различить и он может не успевать анализировать информацию пока пишется код

    ...

    тяжело в нем работать если в дальнейшем планируешь использовать два и более языка

    Честно говоря, какие-то очень странные причины. Я сам не использую vscode, но хотелось бы услышать отзывы от других юзеров - что, правда нельзя редактировать файлы с разными языками? Правда на Js и PHP трудно писать в нем? Это что ж за пытки у вас там такие?

    Ну я могу понять что жрёт память или притормаживает. У меня одновременно может быть открыто 4-7 редакторов с парой десятков файлов в каждом, из разных проектов, из-за этого я тоже, в своё время, отказался от всех IDE и перешёл на Sublime Text. С ним всё хорошо - большие файлы открывает, много хоткеев, есть куча плагинов. Пишу на Python/HTML/CSS/CoffeeScript - проблемы с разными типами файлов звучат для меня дико.

    Вообще вызывает уважение попытка автора перейти из богатого GUI редактора в консоль. И ещё больше уважения за то, что это, судя по всему, удалось и было непросто. Однако, причины немного непонятны до сих пор.


    1. Nurked
      12.05.2025 20:31

      Да нет, основная проблема в том, что vscode жрёт ресурсы нещщадно. Не только сама vscode, сколько любые плагины, ею запускаемые. Мне приходилось ждать по 30 секунд при сохранении файла VUE на машине с 32 гигами памяти и процессором типа i восьмого поколения. Тормозит просто нещадно.

      Для меня выходом был zed.dev, который - как глоток воздуха после этого ужаса vscode. Я описание в комменте выше щас оставлю.


  1. AuToMaton
    12.05.2025 20:31

    Всегда интересно, что пишут про Neovim. И часто ещё и грустно. Мы его «изучать» будем, ага. Так и до инструкции по открытию капота джипа, в картинках и на 19, если правильно помню как у американцев получилось, страницах доизучаться можно.

    Статья мне кажется отличным примером того, что делает с мозгом использование Гугла. Гугол выдаёт сначала видео - худший формат для изучения чего бы то ни было, потом форумы - смесь устаревшего, неверного, и «у меня тоже проблема», и только потом и в исключительных случаях что-то по делу. Уж лучше DeepSeek.

    Как это в точности было - я забыл, как это воспринималось - помню, ибо шокировало. Переход был резким и начался с США. До: я не понимаю - как устроено описано тут, после: у меня problem - вот тебе solution, пользуйся, милейшая обезьяна. Итог - статус brain dead с последующим, как оказалось, переходом на vibe coding.

    В Neovim никакие менеджеры пакетов не нужны, это встроенная функциональность. Менеджеры нужны для удобства, прежде всего обновления пакетов. Не смотрите наверх на менеджеры пока с Neovim не разобрались.

    Никакие мультиплексоры терминала для Neovim не нужны, это тоже встроенная функциональность. Что делать с мультиплексорами - да то же, что и с менеджерами.

    Картинки в терминале смотреть - непонятно зачем. Сейчас. Наверно и скорее всего, можно придумать сценарий, хотя я с ходу не смог. Если Neovim по SSH, то часто картинки проще всего смотреть через http.server или live-server и браузер.

    Neovim изучается не выходя из Neovim. Для этого есть :help. Тут, в порядке исключения, возможен полезный совет - набрав Ctrl+g увидите какой файл показывает Neovim, а набрав Ctrl-G перейдёте в конец файла и увидите - а нет ли там инструкций для Neovim по поводу того, как этот файл показывать. Возврат на начало выполняет gg. Зная эти четыре команды и имея желание делать заметки, что не для всех обязательно и даже хорошо, можно сразу делать их в Neovim и держать там же, где родная документация - они станут её частью.

    Как по мне, перед переходом на Neovim нужно хорошенько проверить - а не достаточно ли более простого и на почти всё способного из коробки Helix, который не достаёт Угандой. Если нужны не основные, и особенно самописные, плагины - точно недостаточно.


    1. rusher
      12.05.2025 20:31

      плюсую, я бы еще добавил что vim motions можно пользоваться не переходя на neovim, в ide от jetbrains есть плагин ideavim, в vscode и zed тоже есть поддержка.


  1. hahavenn
    12.05.2025 20:31

    Вышеописанные проблемы не являются проблемой для neovim и решаются из-под коробки. Еще одним большим плюсом использования neovim будет это возможность работать на сервере, где нет графической оболочки и ограниченные ресурсы.

    В vscode есть плагин от microsoft - "remote explorer" и "remote - ssh". С их помощью можно подключиться на любой сервер с любой ОС установленной на вашем компьютере и файлы будут открыты в редакторе кода по папкам так, как будто ты у себя на компьютере работаешь. Настройка довольно несложная, рекомендую посмотреть


    1. wolf1995 Автор
      12.05.2025 20:31

      мне не очень нравится подключаться по ssh через ide, мне проще это сделать в отдельной вкладке из консоли.

      Для такой функционал в текстовом редакторе излишен. Мне больше нравится инструменты, которые выполняют четко поставленную задачу, а не пытаются втянуть в себя все инструменты, чтобы превратится в очередной комбайн по решению всех и вся задач


  1. isumix
    12.05.2025 20:31

    Странные у вас проблемы с VSCode. Ни разу не испытывал проблем со скоростью его работы, в том числе и на больших проектах. Что касается других языков, не пробовал, но подозреваю что тоже самое что и в пункте первом.

    Что мне нравится в VSCode - это поставил его и работаешь. Есть ли в Vim готовая конфигурация похожая на VSCode чтобы ничего делать не нужно было?

    Neovim скорее не форк, а полный rewrite.


    1. SpiderEkb
      12.05.2025 20:31

      Вот насчет нескольких языков тоже удивило. Сам работаю с RPG (это язык такой, не игры), C/C++ ну и до кучи еще гредл, SQL и XML. Для каждого свой набор плагинов, VSCode сам определяет (по расширению) с чем работаем.


  1. RedEyedAnonymous
    12.05.2025 20:31

    Что только люди не придумывают, лишь бы Geany не использовать.


    1. ThingCrimson
      12.05.2025 20:31

      Geany отличный текстовый редактор с поддержкой проектов, сам давно его использую для документов и скриптов. Но для современного программиста он, подозреваю, слишком беден на возможности. А мне хватает с головой.


    1. isumix
      12.05.2025 20:31

      Ну или Kate для тех кто из другог кэмпа)


    1. wolf1995 Автор
      12.05.2025 20:31

      для каждой задачи создается свой текстовый редактор, какой из них использовать каждый решает сам для себя. Самой главное, чтобы нравился используемый инструмент и понимать как этот инструмент использовать.

      Есть хорошее выражение: все для всех, каждому свое.


  1. Dominux
    12.05.2025 20:31

    Всем привет, меня зовут Александр, я являюсь фронтенд разработчиком более 4-х лет

    Какое это имеет значение, если люди с опытом в 20-30 лет могут быть джунами, а другие через пару-тройку уже сеньорами? И это я не про позицию, а про развитие людей

    новый редактор neovim

    Полностью подтверждаю свою предыдущую догадку про развитие автора, который за 4 года фронтенд-разработки не научился даже гуглить, но вставлять столь ложные факты аж в название статьи - уже научился, молодец! Ведь новый Neovim вышел буквально недавно, в 2014ом, а древний и заросший VS Code - аж в далёком 2015ом! И ладно бы он пылился все эти годы и только в последние месяцы набрал популярность... Но нет, им пользовались почти сразу как заменой vim, автор пропустил холивары в комьюнити насчёт того, что из них лучше, вместе с кучей обновлений неовима с долгожданными фичами

    P.s.: таким авторам ещё рано быть авторами на Хабре имхо


    1. wolf1995 Автор
      12.05.2025 20:31

      Уважаемый, да, я пропустил все холивары по vim, neovim. У меня нет цели спорить, что является лучшим. Меня устраивает этот рабочий инструмент.

      Когда разобрался в нем и понял, что он мне подходит, то решил рассказать об этом. Вы можете рассказать за эти споры, с удовольствием почитаю.