Как стать автором
Обновить

Особенности перехода на новый редактор neovim

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров2.4K

Всем привет, меня зовут Александр, я являюсь фронтенд разработчиком более 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, мне кажется, что если перетерпеть и переучится на этот текстовый редактор, то, в моем случае, я получаю больше плюсов для себя чем минусов, описанных выше.

Теги:
Хабы:
+1
Комментарии13

Публикации

Работа

Ближайшие события