В праздники наконец-то настроил себе 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. Не используйте стрелочки!