18 мая 2022 г.

Консольные редакторы кода актуальны в 2022 году

Когда я только начинал учиться программировать, то считал консольные редакторы текстов типа Vim или Emacs пережитком далекого прошлого или увлечением всяких странных гиков, которым нужно сидеть в каком-нибудь странном тайлинговом менеджере окон и печатать странные команды в 15 терминалах, чтобы быть похожими на хакеров (в реальности хакеры обходятся Kali Linux и парой терминалов). Каково же было моё удивление, когда я увидел, что редакторами кода похожими на Vim пользуются не только суровые линукс-админы, но и фронтендеры с MacOS, работа которых обычно не предусматривает много командной строки. Я решил пристальнее присмотреться к их рабочему процессу и обнаружил свои преимущества у такого способа набора кода. Главное и неоспоримое преимущество консольного редактора кода его изначальная "заточенность" под работу с клавиатурой. А клавиатуры у таких программистов недешёвые механические и зачастую "кастомные", но это тема другого разговора.

Редакторы типа Vim позволяют практически не убирать руки с клавиатуры при наборе текста, не пользоваться мышкой, а значит экономить время и не отвлекаться при написании кода. 

Менеджер окон i3wm и запущенный редактор кода

Да, редакторы типа Visual Studio Code выглядят прекрасно, очень гибко настраиваются и в них даже можно установить расширение с раскладкой как в Vim, но всё это будет не то. При наличии на компьютере Linux и настроенного тайлингового менеджера, консольные редакторы получают дополнительные преимущества, но никто не запрещает вам пользоваться такими редакторами в любой версии Windows, благо проблем со сборками под неё нет. Кроме того, VS Code с кучей плагинов сильно "толстеет" по размеру и работает уже не так шустро и отзывчиво как положено лёгкому редактору кода. У консольных редакторов такой проблемы нет - они запускаются мгновенно даже на больших файлах. 

Редактор Helix editor, запущенный в Windows Terminal
Я ознакомился со множеством разных консольных редакторов (их очень много разных, написанных на Rust или даже на Lua, есть проекты на Electron), но остановился на трёх, которые я хотел бы порекомендовать попробовать всем.
Micro editor. Если вы знакомы с редактором nano в Linux, то он вам точно понравится. Самый простой в освоении, понятный и маленький по размеру. Имеется поддержка тем и подсветка кода из коробки. Управляется комбинациями клавиш, которые можно отображать на экране.
Neovim. Самый популярный редактор, который давно потеснил своего прародителя vim (neovim вырос из форка vim), можно сказать что это отраслевой стандарт для профессиональных программистов. Невероятно расширяемый, гибко настраиваемый, под капотом его Vim, так что почти не требует привыкания, если вы уже знакомы с концепцией работы командами и режимами. Представляет собой конструктор, где каждый программист под себя подгоняет тему, плагины и раскладку. Для новичка не рекомендован, но любой уважающий себя программист должен попробовать зайти и выйти из vim. Если вы хотите воспользоваться чужим конфигом для расширения возможностей neovim, то есть классный AstroNvim. Так же есть отдельные сборки типа LunarVim, которые работают на основе nvim и расширяют его до уровня IDE, так что можно начинать программировать без проблем. 

Helix Editor. Представляет собой развитие редактора Neovim и удачных идей из Kakoune. Более дружественный к новичкам чем Neovim и уже "правильно" настроенный из коробки (тут есть сразу автодополнение и аналог всплывающих подсказок по функциям и методам). Команды для работы немного отличаются от таковых в vim в сторону логичности, более дружественны к человеку (хотя это субъективно и вкусовщина), поэтому требуется некоторое переучивание, если вы уже успели привыкнуть к vim. На Ютубе есть обучающие видео по этому замечательному редактору или воспользуйтесь официальным файлом с короткой справкой, поэтому если вы ещё не успели крепко подсесть на neovim, то рекомендую начать знакомство с миром консольных редакторов текста именно с Helix. Он не заставляет вас сразу погружаться в дебри файлов настройки редактора и осваивать искусство доустановки и настройки плагинов, а позволяет сразу начать продуктивно кодить на любом языке программирования на каком захотите. Единственная его проблема это то, что он не такой мегапопулярный как neovim, может не иметь каких-то специфических плагинов и он находится в стадии разработки. Однако это преимущество одновременно является и недостатком, по мнению пользователей vim: они не хотят иметь из коробки установленные плагины в редакторе, они хотят иметь возможность выбираться и ставить их самостоятельно. 

Все представленные редакторы без проблем устанавливаются под Windows с помощью консольных менеджеров пакетов типа scoop или winget. Helix есть только через scoop, устанавливается командой scoop install helix. В обзоре нет упоминания emacs, не потому что я про него не знаю, а потому что считаю его неподходящим для новичка (кроме того это приложение с графическим режимом, но оно может работать в консольном режиме), хотя фанаты у этого редактора тоже есть и они ведут свои "священные войны" с пользователями "вима". 

Отличный курс по Vim, где вам в самом начале объяснят зачем он нужен и в чём его преимущество.

Ну а ещё вы можете вообще не использовать всякие аналоги vim, а продолжать пользоваться VS Code и делать это эффективно и быстро, если заучите базовый набор горячих комбинаций клавиш. VS Code тоже позволяет работать с клавиатуры без мышки, правда не всегда. Хорошо, когда есть выбор.