Если открыть вимом файл, перевести курсор в нужное место и начать печатать, то с текстом на экране будет происходить всё что угодно, кроме того, что пользователю хотелось сделать. Кратковременный приступ паники, перемешанной со злостью, пройдёт достаточно быстро, ведь файл пока никто не сохранял, так что можно просто отключить питание, включить компьютер обратно и погуглить.
Гуглим, выясняется, что для превращения вима в нормальный редактор нужно нажать i. Только сохранить поредактированный текст нельзя, перед этим надо несколько раз нажать эскейп, а потом набрать :w. А, чтобы его закрыть, нужно нажать эскейп, а потом набрать :q. Тяжёлое наследие прошлого. Ну, зато вим есть везде.
Но в какой-нибудь из статей, рассказывающей, как провести 5 минут в виме и остаться в живых, обязательно будет написано, что вим — лучший текстовый редактор в мире. И ещё выяснится, что люди в нём программируют. То есть, натурально, пишут код. То есть, на дворе 21 век, в любой момент можно скачать Visual Studio, Intellij Idea или, прости господи, Eclipse, а они пишут код в виме. Добровольно.
IDE настолько облегчает работу программиста, что отказаться от использования интегрированной среды разработки нынче можно только имея очень веские причины. И, раз некоторые отказываются от IDE в пользу вима, значит там должно быть что-то круче автоматического рефакторинга, круче интегрированного дебаггера, круче подстановки импортов и интеграции с системами контроля версий.
Интересно, какие такие фичи есть в виме, которых нет даже в IDE, не говоря уже о банальном notepad++?
Печально, но если задать этот вопрос среднестатистическому гуру вим-гольфа — он его просто не поймёт. В этом можно убедиться почитав комментарии на Хабре и вообще полазив в интернете. В ответ на вопрос, чем хорош вим, зачастую пишут, что вот там можно удалить слово, набрав diw, а, если не хочешь удалять, а хочешь выделить, то набираешь viw. Ну, то есть, в первом случае в начале d, во втором v, но потом то и там и там iw, что означает inside word. Ну не круто ли! Утрирую, конечно, но очень похоже на правду.
Но программировать-то в нём как?
Вопрошающий обычно уточняет — вим ведь как-то справляется с задачами, которые обычно решает IDE. Интересно, как? Ему отвечают, что в виме есть много офигенных плагинов, только их надо ставить и настраивать.
Чем эти плагины лучше чем возможности, предоставляемые IDE, выяснить как правило не удаётся, изредка удаётся выяснить, что IDE тормозит.
Тут все становится понятно, человек, который хотел узнать зачем нужен vim, рекомендует второй стороне дискуссии купить компьютер побыстрее и устраняется из разговора.
Ради каких фич вима, пользователи готовы терпеть такие фатальные недостатки, как несколько режимов работы, необходимость запоминать кучу клавиш, и добровольно отказываются от использования стрелок?
Ведь на самом деле, всё наоборот
Это не ради фич вима пользователи готовы терпеть режимы, а ради того, чтобы продолжать пользоваться режимами, пользователи пилят новые фичи в виме.
Да, именно так. То, что на первый взгляд кажется унаследованной медвежутью — на самом деле то, из-за чего вим вообще кому-то нужен.
Вы, возможно, считаете, что ничего хорошего в этих режимах нет и быть не может. Предположим даже, что так оно и есть. Но тем не менее вимом пользуются именно из-за них, всё остальное вторично. Собственно это и есть главная и единственная мысль статьи.
Режимы не фатальный недостаток, а киллер фича.
В обычном редакторе для того, чтобы переместить курсор к концу слова нужно зажать Control, а потом, не отпуская его, перенести руку к стрелкам и нажать клавишу вправо. В редакторе получше, можно нажать не вправо, а какую-нибудь клавишу на буквенной часть клавиатуры, например d, но Control всё равно придётся держать зажатым. А в виме нужно просто нажать e. Пользователи вима ценят возможность проводить манипуляции с курсором и текстом без необходимости держать при этом зажатыми клавиши-модификаторы или убирать руки с home row. Это расслабляет.
Сделаю тут акцент — речь не идёт о том, что с использованием режимов можно сделать такие штуки, которые без них сделать нельзя. Речь не идёт о том, что с использованием режимов всё получается быстрее, чем без них. Речь исключительно о том, что с использованием режимов пользователям вима работать удобнее и приятнее. Или, по крайней мере, они в это искренне верят.
И, если вы хотите понять, что хорошего в виме, нужно пытаться понять, что хорошего в режимах, а не выяснять, какие фичи есть в плагинах и, тем более, не пытаться понять чем эти фичи лучше тех, что предоставляют IDE.
А, если вы хотите обосновать кому-нибудь, что вим — полный отстой, то нужно доказывать, что режимы — полный отстой. Тем, кто использует вим, это на самом деле ни разу не очевидно.
Обратное, кстати, тоже верно. Если хочется объяснить кому-нибудь зачем нужен вим и почему он такой замечательный — рассказывать про плагины бесполезно. Плагины в IDE не хуже. Кроме того, если портировать плагины из вима в какую-нибудь IDE её нельзя будет использовать вместо вима. Для этого надо переносить главное — режимы.
Вместо послесловия
Возможно кто-то скажет, что писать целую статью ради такой мелочи это оверкил. Я тоже так думал, но картину, описанную выше, я наблюдаю уже несколько лет.
Между любителями вима и всем остальным миром существует какое-то грандиозное и при этом совершенно дурацкое непонимание, и я надеюсь, что когда я встречусь с ним в следующий раз, мне достаточно будет дать ссылку на эту статью.
Автор: poxvuibr