
Сегодня я поделюсь своим опытом настройки NeoVim для разработки. Если вы уже немного знакомы с этим редактором и хотите сделать свою работу в нём эффективнее — эта статья для вас.
Vim — консольный текстовый редактор. В отличие от большинства других редакторов, Vim разделяет ввод текста и выполнение команд управления по режимам (нормальный, режим вставки и т. д.), и позволяет эффективно управлять текстом при помощи только клавиатуры.
NeoVim (nvim) — модернизированный форк Vim-а. Предоставляет больше возможностей для настроек и кастомизаций. Для написания конфигурации используется Lua.
Конфиг (или сборка) — совокупность конфигурационных файлов, определяющих вид, поведение и возможности редактора. Подключенные плагины, базовые параметры, мапинги, цветовая схема и т. д.
О готовых сборках
Существует множество готовых сборок-конструкторов nvim. Наиболее популярные из них NvChad, AstroNvim, LazyVim, LunarVim. Они представляют собой написанный за вас конфиг, который можно изменять путём редактирования настроек сборки. Как правило, готовые сборки являются дополнительным слоем абстракции между желаниями пользователя и возможностями кастомизации чистого NeoVim.
Я считаю готовые сборки хорошим вариантом для начинающих. При минимальных время-затратах на настройку вы получаете преимущества NeoVim и кучу инструментов для работы с кодом. Подсветку синтаксиса, линтеры, форматтеры, дебагер и всё то, что есть в большинстве изкоробочных IDE.
AstroNVim. Я начинал своё знакомство с миром nvim именно с этой сборки. Она обладает очень широкими возможностями из коробки. Если вы хотите посмотреть «Что этот ваш вим вообще умеет?», откройте AstroNVim. Это даже не сборка, а целый фреймворк.
Мне же AstroNVim со временем начал надоедать. В первую очередь из-за очень сложно настраиваемой конфигурации, структура которой менялась с выходом каждой мажорной версии. Не говоря уже о перегруженности интерфейса и медленной работе. Да-да, nvim тоже может тормозить.
NvChad. Чуть более скромная по возможностям из коробки сборка, зато с гораздо более простым конфигом и лаконичной структурой. Содержит все основные компоненты, которые нужны разработчику, и минимум лишнего.
Я пользовался NvChad около месяца. После чего мне стало не хватать гибкости и кастомизации, поэтому я принял решение написать собственный конфиг с (почти) нуля.
Конечно, для использования NeoVim вовсе необязательно создавать собственную сборку. Некоторые люди пользуются готовыми, донастраивая их под себя и расширяя плагинами. А иногда даже не расширяя.
Я считаю, что невозможно создать инструмент, который будет одинаково удобен всем. Чем дальше ваши потребности и виденье идеального инструмента от готовых решений, тем больше придётся донастраивать эти готовые решения. Возможно, какой-то момент вы осознаете, что проще было написать всё самому. Так было у меня.
Прежде чем погрузиться в написание собственной сборки, нужно понять, нравится ли вам заниматься конфигурированием и кастомизацией. Если ответ «нет» и вы хотите, чтобы всё работало из коробки, NeoVim не для вас.
Как собрать свой конфиг
С чего начать? Я рекомендую начать с какой-либо из готовых сборок. Этим вы кратно облегчите себе путь на начальном этапе. Заменяя и улучшая различные её компоненты, вы со временем поймете, что от изначальной сборки почти ничего не осталось, а редактор стал ближе к вашему идеалу.
Откуда черпать вдохновение? В первую очередь — из вашей любимой IDE. Проанализируйте, какие функции вам необходимы, и реализуйте их в своей сборке в первую очередь. Изучайте конфиги других пользователей NeoVim (их можно найти на GitHub) и заимствуйте понравившиеся настройки себе.
Как работать над конфигом? Не стоит пытаться создать идеальную сборку сразу и тем более быстро. Лучше улучшать каждый её компонент отдельно, после чего переходить к следующему. Например, сегодня я занимаюсь настройкой линтеров, завтра — статуслайном, послезавтра — форматтерами. И так далее, пока сборка не достигнет желаемого состояния.
Сборку невозможно закончить полностью. Чем больше вы занимаетесь своим конфигом, тем больше вы узнаете о возможных настройках и плагинах и тем больше замечаете недочетов в своей сборке.
Принципы сборки
При создании собственной сборки NeoVim я руководствовался следующими принципами:
Инструмент должен помогать мне решать мои задачи. «Помогать», а не «мешать». «Мои задачи», а не «какие‑то задачи»
Моя продуктивность превыше всего. Не важно, что думают другие про мой конфиг. Не важно, насколько хоткеи соответствуют общепринятым правилам. Если мне что‑то удобно, значит в своей сборке я сделаю именно так
Минимализм в UX. Мне не нужны возможности, которые я не использую. Если плагин не прошел проверку временем, я удаляю его из своей сборки. Если я не пользуюсь мапингом, я его отключаю
Минимализм в UI. Мне не нужно 300 иконок и менюшек. Они не повышают мою продуктивность. Минимальное количество элементов на экране должно давать максимальное количество информации. Сборка должна выглядеть однородно и цельно
Принципы помогут вам принимать решения в процессе создания своего NeoVim. Они описывают, каким должен быть именно ваш идеальный инструмент. Вы можете быть несогласны с моими принципами. Главное — сформулируйте свои.
Правила
Исходя из вышеперечисленных принципов и своего опыта я сформулировал практические правила:
Цветовая схема
Цветовая схема NeoVim включает в себя настройки подсветки текста (программного кода), меню и интерфейсов.
Создаю с нуля. Я отключил абсолютно все предустановленные правила раскраски и цвета, после чего настроил каждый элемент отдельно именно так, как мне нужно
Минимизация цветового шума. Использую цвета, чтобы выделять только действительно важные элементы. Мне очень понравилась концепция темы Alabaster. Сама по себе она слишком минималистична и нестандартна для меня, но её принципы позволили мне иначе взглянуть на цветовые темы редакторов кода
Цвет как носитель смысла. Вместо дополнительных символов я использую разные цвета одного символа для передачи дополнительной информации
Не использую курсив. Точка
Мапинги
Они же биндинги — они же хоткеи — они же горячие клавиши.
<leader>
— это пробелУдобство и скорость важнее мнемоники. Во многих конфигурациях, таких как NvChad или AstroNvim, мапинги основаны на мнемонических правилах:
<leader>ff
— Find File,<leader>Ss
— Save Session и т.д. Такие мапинги легко запоминать, но они не всегда удобны в использовании. Я не полностью отказываюсь от мнемоники, но ставлю скорость работы вышеМапинги должны быть удобными в наборе. Я заметил, что быстрее всего набираю мапинги, когда нажимаю соседние их символы разными руками. На втором месте — когда соседние символы нажимаются разными пальцами одной руки. И самые медленные — когда один символ нажимается одним и тем же пальцем два раза подряд.
Чем чаще используется мапинг, тем он короче. Ни один мапинг не должен быть длиннее 4-х нажатий
Единообразие. Для похожих действий в разных плагинах я использую одинаковые или похожие мапинги. Например,
<leader>e
— для переключения NvimTree и переключения файлового менеджера в diffview
Плагины
Подключаемые модули, которые расширяют возможности NeoVim.
Набор массы и сушка. Моя настройка конфига проходит циклами. Первая фаза — набор массы. Я изучаю множество ресурсов, ищу способы улучшить свой конфиг, подключаю и тестирую новые плагины. Вторая фаза — сушка. Я анализирую, какими плагинами и настройками я действительно пользуюсь, а какими — нет. Как бы ни был крут плагин, если мне он не помогает, я его удаляю из своей сборки
Катомизация. Я не боюсь полностью менять поведение плагина, если дефолтное состояние меня не устраивает
Минимизация мапингов и возможностей. Отключаю всё неиспользуемое в плагинах
Огромное количество плагинов можно найти в подборках, статьях, видео и, конечно, репозиториях на GitHub.
Возможно, вы столкнётесь с тем, что существующие плагины не полностью удовлетворяют ваши потребности. Предложите улучшение в существующий плагин через Issue на GitHub или напишите и опубликуйте свой.
На текущий момент я написал 3 собственных плагина для улучшения работы с GoLang и Git. Вы можете найти их на моём GitHub.
Как прокачиваться в NeoVim
В этом разделе я выйду за рамки вопроса настройки конфигурации и расскажу о тех методах, которые позволили мне прокачать свои навыки использования Vim.
Изучайте возможности Vim. В большинстве видео-уроков и статей о Vim, которые я посмотрел, рассказывалось только о самых примитивных его возможностях. Знать, что управление курсором происходит клавишами h/j/k/l, необходимо но недостаточно для эффективной работы с Vim.
После того как вы освоитесь с базовыми действиями и закрепите их на практике, прочтите две книги про Vim: «Изучаем vi и Vim. Не просто редакторы» (Арнольд Роббинс, Элберт Ханна) и «Практическое использование Vim» (Дрю Нейл). Они кратно улучшат ваше понимание Vim и расширят представление о его возможностях. Мои конспекты вы можете найти в блоге.
Оптимизируйте каждое действие. Обращайте внимание на то, какие операции над текстом вы совершаете чаще всего. Оптимизируйте их. Чем меньше нажатий потребуется сделать, чтобы добиться желаемого результата, тем лучше. Однако из этого правила есть исключение. Если мапинг никак не ложиться в ваши пальцы, не стоит использовать его через силу ради мнимой эффективности.
Не задумывайтесь о каждом нажатии. Поначалу это будет тяжело, но придёт с практикой. Стремитесь к тому, чтобы все нажатия клавиш выполнялись вами автоматически. Как при печати вслепую.
Улучшайте свою сборку. Постоянно ищите новые плагины и тестируйте их в своей сборке; пишите плагины; изучайте чужие конфиги. Следите за новостями в мире NeoVim/Vim. В этом вам помогут раздел на редите и чат русскоязычного сообщества.
Заключение
Сколько времени уйдет на настройку конфига? Всё зависит от вас и ваших целей. Вечер, неделя, год, а может и вся жизнь.
Я начал углублённо заниматься изучением и настройкой NeoVim девять месяцев назад. Примерно через три месяца сборка была готова настолько, что я стал использовать NeoVim в качестве редактора кода каждый день. Остальное время я занимался минорными улучшениями и доработками в фоновом режиме.
Более 200 часов изучения теории и чужих сборок, написания конфига и плагинов, рефлексии и анализа. В этой статье я собрал полученный опыт и изложил его максимально кратко и доступно.
Моя сборка: https://github.com/Yu-Leo/nvim
В заключение хочу дать несколько полезных ссылок. Видео с этих каналов помогли мне в изучении и конфигурировании NeoVim. Я выражаю огромную благодарность их авторам!
Have fun!
Комментарии (4)
Neikist
31.07.2025 18:24Тоже чтоль попробовать с готовой сборки начать... Так-то давно во всех редакторах vim режим включаю.
Tony-Sol
31.07.2025 18:24Для такого заголовка не хватает (а точнее их вообще нет) примеров реализации и хаков, которые как раз таки было бы интересно почитать.
По сути всю статью можно свести к "ну вот есть vim, потом сделали neovim. Если готовые сборки, а можно самому напилить. Ставьте плагины какие хотите, оставляйте - какие нужны, какие не нужны - удаляйте и читайте маны"
cmyser
Сам как то собирал сборочку...
Залетал с астровима
А потом в один прекрасный день открыл для себя zed ,на голову выше конкурентов любых
Neikist
zed мне нравится, но он не без проблем. Например, количество экстеншенов vscode/idea/vim заметно уступает. Плюс иногда какие-нибудь из них отваливаются или не работают, и поди разбери что не так. А еще вечно ругается при попытке чего нибудь скачать на rate limit, поскольку я за vpn.