Долгое время я использовал VSCode. Он прост в установке и эксплуатации, а для поддержки нового языка достаточно просто установить соответствующее расширение из магазина. В свое время это был идеальный инструмент для новичка вроде меня.
Однако по мере увеличения объема работы стало необходимо управлять большими репозиториями, чтобы поддерживать бесперебойную работу на компьютере и согласованность в различных средах ОС.
Моя работа связана с активным использованием машин EC2, доступом по SSH к производственным серверам и работой с подсистемами. Потребность в среде без дисплея или устройства графического отображения была одной из основных причин, по которой я решил перейти на что-то другое. Я хотел найти IDE, которая обеспечит лучшую производительность, настраиваемость, совместимость и эффективность редактирования текста.
Vim — первое, что пришло мне на ум. Поскольку редактор vi является инструментом по умолчанию в большинстве операционных систем, мне стало любопытно узнать, что же такое vi на самом деле. Изучив такие версии vi, как Vim и NeoVim, я решил, что сейчас самое время перейти на это семейство — в частности, на NeoVim.
NeoVim — легкий текстовый редактор, который предлагает молниеносную производительность, бесконечные возможности настройки и повышенную производительность при редактировании текста. Он также позволяет поддерживать последовательный, индивидуальный опыт разработки на разных сетевых компьютерах. Несмотря на достаточно сложный процесс освоения, NeoVim стоит того, чтобы им пользоваться.
Краткая предыстория
NeoVim — форк оригинального Vim, автором и разработчиком которого является Брам Моленар. Как видно на приведенной ниже диаграмме вкладов, он делает почти все коммиты в Vim. При этом полностью контролирует направление развития Vim.

Neovim был создан потому, что некоторые члены сообщества были разочарованы руководством Брама Моленара. Проект стартовал в 2014 году после того, как патч для Vim, поддерживающий многопоточность, был отклонен. В марте 2014 года в пользу Neovim была проведена успешная кампания по сбору средств, которая позволила содержать как минимум одного штатного разработчика. В настоящее время в разработке находится несколько фронтендов, использующих возможности Neovim.
Vim и Neovim похожи, однако у Neovim гораздо большее сообщество, которое, как правило, более доброжелательно относится к новым функциям. В остальном Vim и Neovim довольно похожи.
Что такое NeoVim
Neovim, или Nvim («en-vim»), — расширяемый текстовый редактор, управляемый только клавиатурой (без поддержки мыши) и предназначенный для оптимизации производительности современных программистов. Neovim поддерживается различными нишевыми операционными системами, включая Mac, Windows и Linux.
Смена компьютера не является большой проблемой для пользователей Nvim, так как все, что им нужно сделать, это клонировать свою конфигурацию с GitHub и заменить стандартную конфигурацию Neovim, которая находится в ~/.config/nvim. Чтобы узнать больше о NeoVim, посмотрите это видео.
Neovim в большей степени ориентирован на сообщество, чем Vim, и предлагает расширенные возможности, такие как асинхронные действия и встроенный терминал. Однако Vim также включил в себя некоторые из этих функций.
Самое большое отличие Vim от Neovim — поддержка Lua вместо VimScript. Это позволяет разработчикам создавать сложные плагины более эффективно. В то время как VimScript часто требует использования внешних языков, таких как Python (что приводит к необходимости интеграции внешних зависимостей), Lua встроен непосредственно в Neovim, что делает его более быстрым и оптимизированным, чем VimScript.
Перемещения и команды Vim
Сложность обучения Neovim в основном связана с перемещениями курсора и режимами Vim. Они составляют основу молниеносного редактирования текста в Neovim.
Vim-перемещения (Vim motions) состоят из режимов и команд, которые помогают разработчикам перемещаться по файлу и редактировать код более эффективно, не отрывая рук от клавиатуры. Хотите ли вы визуализировать существующий файл и перемещаться по нему, создать новый файл или открыть терминал — все это можно сделать несколькими движениями пальца!
Одно перемещение
Начнем с основ: перемещение курсора в vim кардинально отличается от того, как это делается в других текстовых приложениях. Здесь также можно использовать клавиши со стрелками, но они расположены далеко от центра клавиатуры, а на маленьких клавиатурах вообще отсутствуют! Вместо них используются клавиши h, j, k и l для обычной навигации.

Считайте эти клавиши стрелками: они перемещают курсор влево, вниз, вверх и вправо соответственно.
Чтобы быстрее перемещаться по тексту, используются клавиши w и b. Они позволяют переходить от одного слова к другому.
Клавиша w перемещает курсор вперед, к началу следующего слова.
Клавиша b перемещает курсор назад, к началу предыдущего слова.
Несколько перемещений
Чтобы перемещаться еще быстрее, можно указать количество повторений команд регистра.
Например, когда курсор находится на букве J первого слова, для перемещения используются следующие команды:
3w— переход к третьему слову от курсора;
2b— возврат на два слова назад от курсора;
3j— переход на три строки вниз от курсора;
1k— переход на одну строку вверх от курсора;
2k— переход на две строки вверх от курсора.
Практический пример
Приходилось ли вам редактировать файл и замечать символ на 10 строк выше, который нужно было изменить? Что вы делали? Скорее всего, что-то вроде этого: перемещали руку к мыши, кликали (упс, ошиблись), исправлялись, возвращались к клавиатуре и понимали, что курсор не совсем там, где нужно, и исправляли это с помощью клавиш со стрелками. А можно просто нажать 10k + h + i.
Вот в чем секрет: Neovim запускается в режиме Normal, в котором разработчик проводит большую часть времени (в этом режиме нельзя напрямую редактировать текст, но вся клавиатура доступна для команд и перемещений, что избавляет от неудобных комбинаций клавиш вроде Ctrl + Alt + Shift), а для редактирования необходимо переключиться в режим Insert (вставки).
Теперь расшифруем команду 10k + h + i:
- 10k — перемещает курсор на 10 строк вверх (количество строк + перемещение);
- h — перемещает курсор влево на один символ;
- i — переключает в режим Insert для редактирования текста.
Поначалу это может показаться неудобным, но с практикой такие перемещения станут привычными. Больше никакой гимнастики для рук, никаких ошибочных нажатий — только плавное и эффективное редактирование.
Практикуем перемещения в Vim
Отработать перемещения Vim можно с помощью увлекательной интерактивной игры Vim Adventures (Vim-приключения). Этот игровой способ освоить основы навигации Vim позволит соединить обучение с развлечением.
Для быстрого ознакомления с редактором сделайте закладку Vim cheatsheet (Vim-шпаргалка) в главном браузере. Она послужит лучшим руководством при запоминании команд и перемещений. Со временем необходимость в шпаргалке отпадет, так как перемещения станут привычными, но ее наличие может упростить процесс обучения.
Регулярно практикуясь с такими инструментами, как Vim Adventures и Vim cheatsheet, вы в кратчайшие сроки научитесь легко и точно перемещаться по текстовым файлам.
Настройка Vim
Vim предлагает бесконечное количество настроек, предоставляя разработчикам полный контроль над IDE. К возможностям Vim относятся:
- Lua Scripting: более быстрые и удобные в обслуживании конфигурации, заменяющие Vimscript и упрощающие интеграцию плагинов.
- Популярные плагины:
- Treesitter — усовершенствованная подсветка синтаксиса и понимание кода путем его парсинга на синтаксические деревья;
- Telescope — мощная система нечеткого поиска для быстрой навигации по файлам, буферам и символам проекта.
- Встроенная поддержка LSP (Language Server Protocol — протокол языкового сервера):
- автозаполнение в реальном времени;
- диагностика и подсветка ошибок;
- функция Go to definition («переход к определению») и документация Hover.
Сочетание этих возможностей позволило Neovim стать многофункциональной и высоконастраиваемой средой разработки. Такая среда обеспечивает скорость, точность и индивидуальный подход к любому проекту, требующему написания кода.
Дистрибутивы Vim
Настроить конфигурацию Neovim можно с нуля, хотя есть несколько готовых к использованию дистрибутивов Neovim, например, AstroVim, LunarVim или предпочитаемый мной LazyVim.
Особенности LazyVim:
- рассматривается как молниеносная альтернатива VS Code;
- обладает конфигурацией на основе Lua;
- легко настраивается и расширяется;
- предлагает разумные настройки по умолчанию для опций, автокоманд и раскладок клавиатуры;
- включает множество готовых к использованию плагинов.
Установка LazyVim
Установка LazyVim не представляет собой ничего сложного. Однако, чтобы полностью раскрыть его потенциал, необходимо соблюсти несколько предварительных условий:
- lazygit — инструмент, позволяющий управлять операциями Git непосредственно в Neovim, такими как просмотр дерева Git, создание PR, коммитов и push-уведомлений — все с помощью раскладок клавиатуры;
- telescope: система нечеткого поиска для файлов и текстов (требуется установить ripgrep и fd);
После установки Neovim настроить LazyVim очень просто: замените текущую папку конфигурации на папку LazyVim, выполнив следующую команду:
git clone https://github.com/LazyVim/starter ~/.config/nvim
Затем откройте Neovim в терминале, набрав nvim. Установка произойдет автоматически.

Настройка среды разработки
Чтобы настроить LazyVim для своих нужд, можете изменить файл lazy.lua. Например, если часто используете Go и Rust, выполните следующие шаги:
cd ~/.config/nvim/lua/config
nvim lazy.lua
Добавьте предпочитаемые языки в файл lazy.lua. LazyVim поддерживает множество языков программирования, и этот шорткат упростит добавление поддержки необходимых вам языков.

Для более продвинутой настройки ознакомьтесь с документацией LazyVim. В ней объясняется, какие плагины установлены и как заменить их на альтернативные, подходящие для вашего рабочего процесса.

Использование в LazyVim инструментов на основе ИИ
В настоящее время LazyVim поддерживает различные инструменты искусственного интеллекта, включая Codeium, Copilot-chat, Copilot, Supermaven и Tabnine. Лично я использую Codeium. Чтобы добавить его, включите плагин Codeium в ваш файл lazy.lua. Затем снова откройте Neovim.

Чтобы включить Codeium, выполните следующие шаги:
1. Откройте Neovim и запустите:
:Codeium Auth

2. Кликните Open Default Browser Option («Открыть опцию браузера по умолчанию»), чтобы завести аккаунт и сгенерировать AuthKey (ключ доступа).

3. Скопируйте предоставленный токен и вставьте его в Neovim.

Теперь Codeium будет полностью функциональным. Например, если вы введете {import types, он предложит поддержку TypeScript для вашей конфигурации Neovim.

Заключение
Переход на Neovim стал переломным моментом для моей продуктивности. Его настраиваемость, скорость и эффективность изменили мои подходы к написанию кода и управлению проектами. Освоение Neovim далось нелегко, но это того стоило. Рекомендую и вам попробовать Neovim — возможно, вы обнаружите, что это именно тот инструмент, который вы искали, чтобы повысить свою производительность и оптимизировать рабочий процесс.
Читайте также:
Читайте нас в Telegram, VK и Дзен
Перевод статьи Chris Ng: I Removed VS Code, and My Productivity Improved Tremendously









