green_fr: (Default)
green_fr ([personal profile] green_fr) wrote2020-05-18 09:12 am

Шутка про баян

Отличная шутка на bash.org, я давно так не хохотал, но только для программистов:

V: А ещё мне тут пришла в голову правильная аналогия про Vim
V: Это короче так: садишься ты в машину, а там вместо руля и педалей стоит БАЯН
V: И каждая кнопка что-то означает, типа: — вперёд 100 м — вперёд 1 км — вперёд до ближайшего светофора — вперёд до отделения полиции — обогнать впереди едущую машину
V: И ещё когда ты садишься, двери блокируются и надо тоже нажать последовательность кнопок на баяне, чтобы выйти
V: А если в движении случайно нажмёшь esc и выйдешь из режима движения, то вместо движения вперёд машина бибикает
V: И соответственно есть прокачанные баянисты, которые ездят по дорогам, играя мелодии. Быстро, эффективно ездят


Чтобы хотя бы что-то было понятно и остальным. Есть такой текстовый редактор, в котором работаешь не только без мышки, то и без комбинаций кнопок на клавиатуре. То есть, ты не можешь нажать Ctrl-C или Ctrl-V — редактор писали на случай ядерной войны так, чтобы он работал всегда, даже по сети, даже когда связь настолько плохая, что информация о нажатии одной кнопки может дойти, а про вторую — нет. И вам не нужно, чтобы вместо Ctrl-C у нас напечаталось C.

Соответственно, у редактора есть три режима:
1. Режим ввода. Когда каждая кнопка с буквой (символом) обозначает просто букву, и та печатается в редактируемом документе.
2. Режим навигации. Поскольку кнопки со стрелочками — это «сложные» кнопки, то они ведь тоже не работают. Вместо них в режиме навигации используются кнопки j / k / l / m — это влево / вниз / вверх / вправо соответственно. Помимо этих кнопок задействована вся остальная клавиатура, и в этом настоящее богатство vi — есть вариант «перепрыгнуть на одно слово» (аналог «Ctrl-стрелочки»), но есть и вариант «перепрыгнуть на 5 слов». Можно перейти в конец строки (аналог «Ctrl-End»), а можно перейти на третье с конца слово в пятом параграфе, начиная от текущего. Там же поиск — можно перейти на второе слово, в котором не менее четырёх гласных. И начала программирования для замены — найди слова из 4 букв, если первая из них «f», то замени вторую на «*». Вы не поверите, но это часто крайне удобно, экономит часы времени. Красивая иллюстрация того, как наложенные снаружи ограничения заставляют нам создавать шедевры.
3. Режим работы с системой. Здесь те же самые кнопки выполняют команды вроде «сохрани файл», «выйди меня отсюда».
Ну и отдельные кнопки в каждом из режимов, чтобы перейти в другой режим (упомянутый в анекдоте Esc).

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

[identity profile] green-fr.livejournal.com 2020-05-18 08:03 am (UTC)(link)
А зачем тогда ты его используешь? Я когда в нём работал, как раз пёрся от всей этой мощи, и использовал её на полную (ну, как мог...). И до сих пор в любом текстовом редакторе первым делом проверяю те же regexp - как они пишутся, как ими можно пользоваться.

[identity profile] dmpogo.livejournal.com 2020-05-18 08:24 am (UTC)(link)
Не знаю, я никогда ни в чем таком не пытался освоить полную мощь. Мне это было и не интересно, и в голове навыки не закреплялись. Наверно потому что у меня работа не в программировании, и скорость редактирования никогда не была ограничивающим параметром. Мне пофиг нажать 'j' и ждать когда пролистнется 1000 строк. Хотя я могу и слайдером сбоку сдвинуть :)

Иногда я пользуюсь другими редакторами, например kile заточенным по Lаtex. И там я например знаю что могу отметить целый раздел и закомментировать его одной командой. Но чаще делаю это вручную, строкy за строкой. Я наверное о чем то думаю когда это делаю. Или даже скажем я или не знаю что писать, тогда надо думать, или знаю - тогда, если в самом деле знаю что будет работать - оттягиваю удовольствие это реализовать :)