Краткое введение в vim
Будем мы использовать vim в 2023г.?
Эту статью я написал во время ковидного карантина, пытаясь объяснить своему старшему сыну что же такое vim. Придать понятную форму этому тексту было непросто, но раз текст написан и хранить его в сундуке нет никакого резона, я его публикую.
Мастер использует тот инструмент, который, по его мнению, даст наилучший результат, независимо от того, используется ли он всеми остальными или нет. А хороший мастер делает свои собственные инструменты, когда это необходимо. Брам Муленар, создатель vim
Вместо предисловия
В начале 2022 года появилось очередное небольшое интервью с создателем vim Брамом Муленаром. В интервью уважаемый создатель ничего сенсационного не сообщил. В июне 2022 г. вышла очередная версия vim. Она содержит несколько полезных улучшений, но ничего революционного там не появилось. Vim по-прежнему развивается совершенно естественным образом. Эволюционным. Ну а я, как многолетний пользователь vim, решил опубликовать эти небольшие заметки. Надеюсь, что они могут оказаться полезными в первую очередь для тех, кто vim до сих пор не использовал.
Vim/gvim-это свободный текстовый редактор, который разрабатывался для того, чтобы создавать и редактировать тексты удобным способом.
В качестве текстовых файлов чаще всего используются:
* Файлы конфигураций различных систем и программ.
* Исходные тексты программ на различных языках программирования.
* Структурированные тексты с различной разметкой.
* Неструктурированные тексты на естественном(человеческом) языке.
Заметим, что сигнальные систему пчёл и язык дельфинов vim не только не поддерживает, но у разработчиков нет никаких планов развивать редактор этих направлениях. И это просто возмутительно.
Если быть совсем точным, то vim/gvim - это не одна единственная программа, а две разных программы - консольный редактор vim и редактор с графическим интерфейсом gvim. Различия между ними минимальны и в основном касаются настроек консоли/графического интерфейса, дополнения(плагины) в большинстве случаев работают с обоими вариантами программы. И хотя консольный редактор vim, и его потомок с графическим интерфейсом - gvim, наиболее известны, в семействе есть и другие родственники, как уже усопшие, так и вполне живые. Можно сказать, что современный vim является результатом довольно длительной эволюции.
Vim ведёт свою родословную от консольного редактора ОС Unix vi. Появление редактора vi запустило лавинообразный процесс его копирования и переделывания. В этой статье упоминаются уже ныне забытые клоны vi: calvin, elvis, elwin, lemmy,nvi, stevie, vile, viper. В качестве живого и вполне процветающего родственника следует упомянуть neovim.
Следует также сказать, что vim - это переносимая программа, которая многократно портировалась на большинство операционных систем, включая Unix\Linux\macOS-Х\Windows.
Vim работает на следующих операционных системах: весьма обширном семействе Unix-подобных OS(IBM AIX, HP-UX, SGI IRIX, Sun Solaris, SCO OpenServer , Linux, BSD, macOS, Raspberry Pi OS), в популярных системах от компании Microsoft (начиная с Windows 3.x), и прочем зоопарке включая DOS, Android, iOS, AmigaOS, Atari , BeOS, NextStep, OS/2, VMS. Исчерпывающий список составить трудно. Возможно, существуют и другие операционные системы, про которых я никогда не слышал, и портирован ли туда vim, cказать сложно. Если говорить о самой популярной когда-то настольной ОС MS Windows, то vim вполне функционален в большинстве версий, и предоставляет все необходимые для полноценной работы функции. Но следует сказать, что некоторые дополнения vim слишком сильно интегрированы с архитектурой систем, похожих на Unix, и некоторые проблемы в среде Windows с их функционированием могут возникать.
Vim - это открытая и гибкая программа и может взаимодействовать с внешними системами и утилитами с помощью плагинов. Поведение редактора и выполняемые функции могут быть существенно изменены с помощью файла конфигурации.
Фактически vim предоставляет удобный и настраиваемый способ интеграции различных технологий. Ну а под капотом может быть разное.
Совершенно естественно, что с течением времени и развитием технологий, потребности в интеграции существенно меняются. Кроме того, разные люди используют разные наборы технологий. Это означает, что настройки редактора и набор плагинов у разных людей могут быть различными.
Vim использует для редактирования текстов различные режимы. Этим он существенно отличается от большинства текстовых редакторов. Vim был разработан для работы с клавиатурой и без помощи мыши. Ну а поскольку количество комбинаций клавиш для управления ограниченно, то для выполнения отдельных операций над текстом, появились специализированные множества управляющих клавиатурных комбинаций, которые называют режимами.
При запуске редактора, он находится в нормальном режиме, который не предполагает ввод текста, но позволяет быструю навигацию по тексту, удаление, поиск и замену фрагментов текста. В этом режиме для навигации по тексту и управления активно используются клавиши с буквами латинского алфавита.
С точки зрения неопытного пользователя, нажимающего на клавиши с целью напечатать текст в нормальном режиме, vim бибикает и загадочным образом портит текст. Если вас угораздило запустить vim и вы не знаете как теперь выйти из программы, то в качестве спасательного круга подскажем простой способ, который в большинстве случаев работает: нажмите клавишу <esc> и наберите команду :q!. Содержимое буфера редактора при этом не будет сохранено, но редактор вы покинете.
Существует ещё одна область деятельности в которой vim применяется очень часто. Консольный vim часто используется для удаленной работы в текстовых терминалах. Такое применение редактора очень удобно, так как скорость каналов может изменяться, но даже на медленных каналах вполне можно работать, и если учесть, что программы-эмуляторы терминалов очень архаичны и до сих пор не всегда полноценно поддерживают современные клавиатуры, стандартные клавиатурные комбинации vim в таких ситуациях обычно работают без особых проблем.
Так что для системных администраторов знакомство с vim часто остаётся насущной необходимостью.
Современный Vim появился в результате длительной эволюции. Первые версии писались во времена, когда процессоры были большими и медленными, оперативная память измерялась в килобайтах, скорость сети - в килобитах в секунду. Первая версия вышла в 1991 г.
Если ваш текстовый редактор, при открытии большого файла уходит в длительные раздумья, то может быть вам следует попробовать vim.
Когда я работал администратором баз данных, мне приходилось отрабатывать сценарии загрузки данных. В процессе работы было нужно исправлять строки с ошибочной разметкой в файле размером в несколько десятков мегабайт. Даже просто открыть такие файлы и просто посмотреть содержимое позволяют далеко не все текстовые редакторы.
На современном оборудовании vim крайне нетребователен к ресурсам, работает достаточно быстро и этим он отличается от большинства новейших текстовых редакторов и IDE. Кроме того, vim позволяет открывать файлы достаточно большого размера, с достаточно экономным использованием памяти.
Чем vim не является
Не следует считать Vim полноценной IDE, поэтому всё, что связано с отладкой кода, профилированием приложений и прочими, функциями, которые реализовывают современные IDE, vim не располагает. Плагины дополняют редактор отдельными функциями, но в качестве полноценной замены IDE vim всё же не годится. И хотя отдельные энтузиасты пытаются и, часто небезуспешно сделать узкоспециализированные варианты настроек для изготовления узкоспециализированной IDE на базе vim, в результате зачастую получается очень сложный в настройке конгломерат из плагинов, практическая польза от которых не всегда понятна.
Плагинов на самом деле очень много. Но это просто отражение простого факта, что редактор на протяжении десятилетий активно использовался для выполнения самой разнообразной работы. В конце статьи приведена ссылка на сайт vimawesome.com. Там можно познакомится с наиболее популярными дополнениями к vim, так что если у вас возникает потребность расширить функции редактора с помощью плагинов, начинайте ваш поиск с знакомства с наиболее популярными плагинами. Начинающие пользователи очень часто пытаются установить большое количество плагинов, и в результате обнаруживают, что редактор стал работать как-то странно и, иногда, медленно. Я бы сказал, что это вредная привычка. Совершенно необязательно устанавливать все возможные плагины, особенно если вы плохо понимаете базовый функционал редактора. Но некоторые из плагинов могут существенно упростить жизнь и повысить скорость работы. Плагины следует устанавливать по мере возникновения потребностей в недостающем функционале.
Vim не ориентирован на графический интерфейс и не является очень дружественной программой. Большинство современных программ использует графический интерфейс, с системой меню и подсказок, что облегчает работу, и сокращает время обучения.
Работа без мыши позволяет радикально ускорить работу с текстом. Именно в таком режиме vim демонстрирует свои чемпионские качества в полном блеске, обеспечивая быстрый доступ к многочисленным и многообразным операциям над текстом.
Тем не менее, современная версия gvim поддерживает работу с мышью, имеет систему меню для основных операций с файлами, но для эффективной работы с редактором гораздо продуктивнее использовать клавиатурные команды.
Vim не поддерживает современные офисные форматы документов и в качестве офисного редактора не подходит.
Впрочем vim довольно хорошо поддерживает обработку структурированных текстов в форматах markdown, html и пр., которые в свою очередь можно автоматически преобразовывать в различные офисные форматы документов. Заметим, что никакого технологического барьера между структурированным текстом и офисными форматами давно не существует.
Устарел ли Vim ?
Я полагаю, что нет. Если судить по различным обзорам (например, вот здесь), примерно, от 15 до 25 процентов программистов используют vim. Учитывая, что продвижением программы никто специально не занимается, это очень значительные цифры. Появляющиеся в последнее время плагины очень точно отражают современный набор технологий и типовые виды работ в отрасли. А это как раз говорит о том, что редактор активно используется профессионалами для ежедневной работы.
Используя vim, вы можете выполнять работу достаточно удобным способом. Вы можете редактировать программы практически на всех современных языках программирования, включая самые новые, вы можете создавать HTML страницы и таблицы стилей, вы можете писать структурированные тексты с разметкой markdown. Кроме того, вы можете приспособить редактор под ваши индивидуальные привычки.
Практический все операционные системы семейства Unix/Linux очень часто используют vim в качестве основного редактора текстов в режиме консоли. Администраторы подобных ОС составляют заметную часть пользователей vim. Так что для некоторых инженеров использование vim может оказаться профессиональной необходимостью.
Вполне возможно, что появление новых программ и операционных систем может существенно сократить количество пользователей vim. Но, как показывает практика, такие процессы никогда не носят одномоментного характера.
Vim - открытая программа. Но не очень дружелюбная.
Освоение vim занимает некоторое время, но это плата за универсальность и приспособляемость, и такие свойства редактора в настоящее время востребованы у специалистов. Вполне вероятно, вскоре вы обнаружите, что с помощью vim некоторые работы выполнять очень удобно, и в разных операционных системах вы можете использовать один и тот же инструмент.
Вместо заключения
Инструменты для разработчиков непрерывно развиваются, в этом контексте невозможно не упомянуть Visual Studio Code от компании Microsoft. Это замечательная программа, обеспечивающая разработчика множеством инструментов. И, казалось бы, можно отказаться от использования старых инструментов, и от vim в том числе. Но ... режим работы без мыши позволяет практически в несколько касаний получить к самым разнообразным операциям над текстом. Именно по этой причине vim остается эффективным инструментом для обработки текстов, и вполне может быть использован для эффективной работы. И не сомневаюсь, что тысячи людей продолжат пользоваться этой замечательной программой.
И вы, уважаемые читатели, можете также присоединиться к их числу.
P.S.
Эта статья была набрана в VIM 8.2 на двух различных компьютерах в различных операционных системах.
>Vi IMproved 8.2 (2019 Dec 12, compiled Dec 12 2019 13:30:17)MS-Windows 32-bit GUI version with OLE support
>Vi IMproved 8.2 (2019 Dec 12, compiled Feb 24 2022 18:41:57)
Included patches: 1-4464
Compiled by Arch Linux
Markdown в последние годы набирает популярность. На мой взгляд это простой и эффективный способ подготовки электронных публикаций.
Написав текст в разметке markdown, вы можете без особых усилий преобразовать его практически в любой формат документов. Vim отлично справляется с подобной работой.
Скриншот иллюстрирует процесс написания этой статьи. Плагин tagbar, на мой взгляд, относится к категории самых востребованных, он использует утилиту ctags для получения списка тэгов и отображает оглавления для исходных текстов программ и структурированных текстов. Tagbar умеет показывать оглавление документа и для текстов в формате markdown, что довольно удобно.