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

Зачем в 2023 использовать vim?

VI(M) - это не только что-то древнее, но и принципиально иной подход к написанию текста и кода. Главная фишка – все действия с кодом и текстом можно выполнить без использования мышки. Совсем.

Современные IDE (VSCode, JetBrains, etc) заточены, в первую очередь, под написание кода. Но разработчики не только пишут код, но читают и редактируют. Вим позволяет делать всё это со скоростью мысли.

А ещё vim (на худой конец, его предшественник - vi) предустановлен почти во всех unix-подобных системах. Можете проверить в своей консоли.

С чего начать погружение

Окройте vim, напишите :vimtutor. Это интерактивный гайд по vim. Он научит основам языка (да-да, vim – это, в первую очередь, язык) в лучшей форме из возможных – на практике.

Привыкнуть к языку проще в привычной среде – поставьте vim-mode в свой любимый редактор. Он есть буквально везде: Sublime, VSCode, JetBrains.

You don’t grok vi

Обычно vi критикуют за архаичность. Мол, зачем нам навигация по hjkl, когда есть стрелочки. Проблема с vim в том, что you don’t grok vi.

Я не гуру vi, но уже не представляю свою жизнь без замен в диапазоне (:123,456s/foo/bar/g), замен кода внутри кавычек и скобок (ci", ci() и много другого. Это реально быстрее работы с мышью.

Как настроить neovim

Чем больше я использовал vi, тем больше мне хотелось уйти от работы с мышкой совсем. К сожалению, в привычном мне редакторе (VSCode) это было невозможно. Несмотря на наличие кучи шорткатов и vim-режима, без мышки пользоваться редактором практически невозможно. Да и возможности vi в редакторах ограничены.

Чтобы воспользоваться vi на все 110%, нужен специальный редактор. Мой выбор пал на neovim. Это улучшенный форк vim (vim - Vi improved, ке ке ке):

  • есть встроенный LSP,
  • асинхронщина,
  • поддержка lua-скриптов (а они практически так же быстры, как и Си).

Я прочитал много гайдов и dotfile’ов людей, чтобы настроить свою версию. Делиться своим конфигом не буду. Не потому, что мне жалко, а потому, что любая преднастроенная версия vim/neovim будет opinionated. Но я подскажу, куда копать.

Что будет в каждом гайде из интернета:

  • установка neovim (oh rly?),
  • установка patched шрифта (это нужно для различных символов, использующихся в плагинах),
  • установка пакетного менеджера (я использую packer, но lazy.nvim звучит многообещающе – рекомендую присмотреться).

Дальше я вижу несколько веток прокачки (жирным выделяю свой выбор):

  • Tree / Telescope – навигация по файлам через дерево или через fzf-поиск,
  • Регистры / Поиск по анонимному регистру (в том числе, через Telescope),
  • Search и wWbBeE / leap / lightspeed – навигация по коду,
  • Табы и окна / поиск по буфферам (опять же, через Telescope тоже можно),
  • Встроенный терминал / сторонний (+ общение с neovim через клиент-сервер).

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

Плагины удобно искать в репозитории или через общий для vim и neovim сайт плагинов. Рекомендую отдавать предпочтение плагинам на lua – они шустрее.

Мир (neo)vim огромен, даже официальная дока большая – всего в небольшой статье не раскрыть. Я лишь хочу мотивировать попробовать изучить этот интересный мир.

P.S. Эта заметка написана в neovim. ;)

P.P.S. Не используйте стрелочки!