Будем мы использовать 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, что довольно удобно.

Ссылки

[Vim Creator Bram Moolenaar Interview by Evrone]

[Домашняя страница vim]

[Самые популярные дополнения для Vim]

Комментарии (19)


  1. mrobespierre
    17.07.2023 11:02

    Vim действительно не является ide

    к счастью, у нас есть neovim, который благодаря простому но мощному API давно превзошел по функционалу и удобству не только Vim, но и любые IDE (справедливости ради IDE работают из коробки, но если вы - программист, то 200 строк на Lua вы точно осилите)


    1. piratarusso Автор
      17.07.2023 11:02

      У Neovim есть свои пользователи, я их упомянул в статье, но их в тысячи раз меньше, чем у vim. У neovim есть как положительные стороны, так и недостатки. Я не против того, чтобы пользовались neovim, я просто предпочитаю vim. Я не хочу потерять старые плагины. В этом смысле для меня vim ценней. Lua неплохой язык, но плагины на него не очень переписывают. Так что приходится выбирать что удобнее.

      Что имеется в виду про IDE из коробки просто непонятно


      1. mrobespierre
        17.07.2023 11:02

        Ну если считать тех, кто "на удалённом серваке поправить 4 строки и всё", то да, больше. Если считать тех, кто используют редактор локально и "для всего", то neovim уже давно популярнее.

        Плагины на Lua ещё как переписывают, т.к. хуже vimscript ничего не придумать. Но и последний прекрасно работает (кстати лучше чем в Vim), поэтому и старые плагины работают всегда или почти всегда.

        А IDE вы видимо никогда не использовали, вот и не понимаете, о чём речь.


        1. piratarusso Автор
          17.07.2023 11:02

          >А IDE вы видимо никогда не использовали, вот и не понимаете, о чём речь.

          Я не понимаю, что именно вы понимаете под IDE и neovim. Поддержка language server и autocompletion это всё-таки не совсем IDE. Поскольку вы лучше знаете, то может быть вы объясните как там дела с отладкой, профилировкой, юнит тестами и прочей лабудой?


  1. FanatPHP
    17.07.2023 11:02
    +6

    Интересно, но если честно, со стороны выглядит не очень кратким и слишком "введением" (в значении "предисловие, предуведомление"). От статьи с таким заголовком ожидаешь какой-то практической информации, а её в как раз и нет. То есть по факту, это скорее такие "Рассуждения по поводу vim в 2023 году"


    1. piratarusso Автор
      17.07.2023 11:02

      Я посчитал полезным написать этот текст именно в такой форме. Я изложил своё мнение на тему, что такое vim в целом и какими соображениям я руководствуюсь, используя vim. Книг и учебников технического характера очень много. Есть и очень неплохие.


  1. LIKES
    17.07.2023 11:02
    +1


    1. asakasinsky
      17.07.2023 11:02
      +2

      IQ 200 — Sublime Text


  1. le2
    17.07.2023 11:02

    удается ли кому-нибудь рефакторить чужой код в vim? У меня совсем не получается.


    1. iuabtw
      17.07.2023 11:02

      От проекта зависит. Я для питона настраивал, обмазался плагинами, и было отлично


      1. piratarusso Автор
        17.07.2023 11:02

        rope?


  1. event1
    17.07.2023 11:02
    +6

    Чтобы выйти из vim нажмите ESC, потом введите ":q!" и Enter

    любое введение в vim должно начинаться с этого предложения


    1. WebMonet
      17.07.2023 11:02
      +2

      Это уже вывод.
      Введение - это все-таки про два режима работы: портить существующий текст и бибикать.


  1. gotch
    17.07.2023 11:02
    +1

    Почитал книжку "Изучаем vi и Vim. Не просто редакторы", а там пишут, что вообще-то vi это два редактора, vi и ex. И после ввода ":" мы работаем с ex. Это действительно так? :-)


    1. piratarusso Автор
      17.07.2023 11:02

      Vi - это вообще очень старый консольный редактор, он умеет эмулировать для совместимости команды другого старого консольного редактора ex. Это всё такие археологические древности. Первое издание "Learning the vi" вышло в 1986 г. В современных переизданиях это зачем-то перепечатывается .


  1. net_racoon
    17.07.2023 11:02
    -1

    Никогда не понимал Vim. А больше всего не понимаю его "впихуемость" во все виды линуксов и BSD как редактор по умолчанию. Ну надо мне поменять конфиг, зачем мне для этого комбайн к которому надо еще кучу мануалов почитать?


    1. domix32
      17.07.2023 11:02
      +1

      Основной плюс vim это не столько сам vim (хотя портабельность тоже) сколько vim motions, то бишь некоторый дефолтный набор биндингов, который переносится во многие места. С другой стороны если вам не нужно, то вас особо никто и не заставляет и вас устраивает уровень производительности в редакторе по вашему выбору.


  1. domix32
    17.07.2023 11:02

    А что за плагин для ToC?


    1. piratarusso Автор
      17.07.2023 11:02

      Это написано в последнем абзаце статьи.