Vim головного мозга

todo

 _______________________________________________________
| terminal - zsh                               [#][-][x]|
|"""""""""""""""""""""""""""""""""""""""""""""""""""""|"|
|~/Repos/blogsite:$ git pull                          |"|
|                                                     | |
|Enter passphrase for key ~/.ssh/id_ed25519:          | |
|Already up to date.                                  | |
|                                                     | |
|~/Repos/blogsite:$ nvim                              | |
|                                                     | |
|                                                     | |
|                                                     | |
|                                                     | |
|                                                     | |
|                                                     |_|
|_____________________________________________________|L|

Вам знакомо ощущение, когда у вас есть инструмент (допустим молоток), которым вы регулярно пользуетесь, но постоянно что-то в нём не устраивает? То ручка у молотка неудобная, то в плечо слишком сильно отдаёт, то неудобно забивать гвозди… Вы начинаете размышлять и анализировать, что не так. Пытаетесь понять разные способы использования, что-то “подпилить”, или же пробуете другой молоток.

Вот меня часто такие ощущения посещают касательно разных инструментов. Пробовать разные связки инструментов: пропиетарные или open-source, набор микро-утилит или “всё-в-одном” комбайны… А поскольку мои работа и хобби связаны с программированием, то главным инструментом у меня является текстовый редактор.

Примерно последние лет 10 я пробовал разные редакторы и анализировал, что мне в них нравится, что нет, но возможно допилить, а с чем придётся смириться. И хоть я и продолжаю экспериментировать с этой темой и по сей день, но я решил подытожить итоги своих изысканий в этом посте.

А с чего начинали?

Я постарался вспомнить всё то, чем приходилось пользоваться для написания кода в частности и разного рода текстовых заметок (пожалуй за исключением очень особых случаев, типа стандартного Блокнота Windows и каких-нибудь PascalABC да прочих Wolfram Matematica и матлабов) и постарался их расставить в хронологическом порядке их пользования.

Итак, встречайте:

1. Visual Studio (2010 - 2018)

Базированая IDE от конторы (на тот момент) Балмера, с которого я и начал писать. Узнал я о ней из своей первой книги по программированию “C++ Demystified” за авторством Jeff Kent, где предлагалось использовать версии 2005 или 2008 года. С VS2008, в общем-то, я и начал свой путь. И поскольку я тогда только начинал свой путь, то для меня самым важным было то, что “среда может за меня преобразовать мой код в реально работающую программу”, ибо представления, как иначе я могу это делать, кроме как попросить умную среду разработки сделать это за меня, у меня не было.

Пользовался я студией довольно долго, если смотреть исключительно по годам, а именно в периоды средней и старшей школы, и почти всё время обучения в университете. Периодически обновляя мажорные версии, у меня получился путь:

  1. Visual C++ Express 2008
  2. Visual Studio Express 2012
  3. Visual Studio Community 2015
  4. Visual Studio Community 2017

Мажор 2017 стал последней моей студией, поскольку с годами я реже в неё заходил, отдавая предпочтение другим инструментам, и вот почему.

Студия огромная. Я думаю большинство интересующихся знает, сколько она требует ресурсов от компьютера. Даже на этапе установки, инсталлер тебя засыпывает разного рода, типа:

  • “а не хотите ли поставить .NET рантайм времён царя гороха?”
  • “или может быть MSVC C++ 200x года для архитектуры aarchFooBar?”
  • “а мы ещё вам и веб-разработку предложить можем, гыы”
  • etc.

От обилия опций просто разбегались глаза, превращая процесс установки в утомительное занятие. А на деле ты и толики из них мог не использовать, потому что часть из них тебе не нужна априори, про часть из них ты вообще не знаешь, а что-то ты просто не используешь ежедневно, а лишь периодически. Но это всё сказывалось и на состояние IDE – она могла занимать крайне много места и работать медленно.

Кроме того, студия обязывала пользователя сидеть на оси от мелкомягких, ибо никаких сборок ни под Жму/Линупс ни под Мак нет.

Всё это стабильно напоминало о себе, подталкивая к тому, чтобы

  • во-первых: запускать её как можно реже и только если очень надо
  • во-вторых: задуматься об альтернативных редакторах

Notepad++ (2011 - 2017)

Блокнот плюс плюс стал мной использоваться как замена стандартному блокноту. В нём было всё, что так мне не хватало стандартному блокноту от мелкомягких, а именно:

  • подсветка синтаксиса для разных синтаксисов
  • вкладки
  • нескучные обои темы

Чаще всего я его использовал для правки конфигов и скриптов, но это никогда не было основным редактором, потому что интерфейс выглядит как внебрачный ребёнок IBM и GNU и работать в таком – удовольствие на любителя. Кроме того, несмотря на то, что он поддерживал систему плагинов, она всегда казалась очень неудобной, что тоже заставляло меня “желать лучшего”.

Dev C++ (2015 - 2018)

С 2015 я начал обучение в университете и соответственно я стал часто программировать классические computer science вещи на C и C++, которые мне там задавали. А вместе с этим я стал подрабатывать у родителей. И иногда на подработке у меня появлялось свободное время, в которое я хотел иметь возможность писать эти университетские задачи.

На рабочий компьютер совсем не хотелось ставить тяжёлую студию, поэтому я искал альтернативы. Про то, как можно пользоваться напрямую gcc я ещё не знал, поэтому я искал IDE, которая проделает процесс сборки за меня, не посвящая в подробности, но при этом была бы легче, чем MSVS. И я нашёл такую: Dev C++.

Интерфейс был невероятно минималистичным по меркам IDE и больше походил на тот же Notepad++, но с урезанным функционалом, но при этом с выведенными кнопками под сборку/дебаг. И меня это более чем устраивало, потому что все приложения, что я тогда писал – все были CLI-based, а значит возможности типа Window Designer и прочее связанное с WinForms или другим API мне было не нужно.

Она помогала мне решать эти задачи, но со временем задачи становились сложнее и со временем они вышли за рамки CLI, а значит мне нужно было двигаться дальше…

XCode (2015 - 2017)

Пункт так же обусловлен моим обучением в университете. Для успешной сдачи предметов в университете, мне надлежало не только “запрограммировать задачу”, но и как-то её показать преподавателю. И чаще всего мы это делали во время пары, в компьютерном классе, где стояли университетские компьютеры. Но это не всегда былоо удобно, потому что:

  1. Бывали моменты, когда отлаженные дома исходники переставали собираться на университетском ПК и приходилось в срочном порядке разбираться, что пошло не так. По старой доброй традиции тулчейнов C и C++, ошибок было невероятно много и подавляющее большинство было максимально неинформативно, что приводило к деморализации.
  2. Иногда одной пары было просто недостаточно, чтобы сдать работу ""от и до”, и показ работ переносился из компьютерных классов в другие места, где машин уже не было.

Посему большинство студентов чаще стало предпочитать приносить собственный ноутбук, на котором можно было заранее удостовериться, что билд проходит нормально и, в случае чего, можно показать работу вне времени пары. А поскольку у меня дома не было ноутбуков с живой батареей, кроме отцовскго MacBook Air 2013, то пришлось брать его. И опять же, пользоваться gcc я не мог, про JetBrains я тогда ещё не знал, да и вообще “интернетные знатоки” твердили:

хочешь кодить на маке – XCode тебе в руки

И поэтому всё так произошло…

О Один всемогущий, какое отторжение она вызывала у меня. Абсоллютно ублюдский фирменный Apple-fashioned интерфейс, который по идее должен был упростить создание проектов, но по факту только мешал… постоянные несовместимости… абсолютно гадские ситуации, когда ты подготовил исходники на windows окружении (без использования Windows-specific вещей, только libc_), переносишь это дело в XCode… и радуешься абсолютно новым, неизведанным ошибкам, которые нехотя, но пытаешься починить.

Не стоит и говорить, что как только появилась возможность не прикасаться к этому отродью, я незамедлительно воспользовался ею.

VSCode (2018)

В 2018 я узнал о таком явлении, как “текстовый редактор, ориентированный на написание кода” и Visual Studio Code был одним из самых зафорсенных. В том году я уже почти не программировал на C/С++, иногда брал в руки C#, если нужен был GUI, или же брал Python, если графика не требовалась. И как раз для написания скриптов на Python я думал и попробовать VSC, тем более, что Мелкософт сделал его кроссплатформенным, что давало +10 очков к нему.

Увы, я не помню уже конкретно, что меня оттолкнуло в нём тогда, но долго я не смог на нём усидется – что-то было в нём для меня неудобное.

Atom (2018 - 2020)

TODO

JetBrains (2018 - ?)

TODO

Сегодня выступает легендарный Vim

TODO

… и его популярный внук Neovim

TODO

Сборки SuperZverVim 9999-in-1

TODO

“Бумер спок, никому уже не нужны твои советские молотки!”

TODO

Теги: software