Как обычно пытаются выучить Vim: находят список из 50 команд, заучивают десяток, забывают девять и делают вывод, что Vim — для людей с хорошей памятью.
Подход провальный, потому что у него неверная форма. Vim — не куча сочетаний для зубрёжки. Это маленький язык с грамматикой, а как работает грамматика, вы уже знаете: прямо сейчас читаете.
Глаголы и существительные
Фраза по-русски: удалить слово. Фраза на Vim: dw.
d — глагол, delete. w — существительное, word. Вместе получается инструкция. Не заученное сочетание, а составленная вами фраза.
Теперь поменяйте части. c — change (удалить и начать печатать). y — yank (скопировать). Оставьте w — получите cw и yw. Вы не выучили две новые команды. Вы выучили один глагол и переиспользовали уже известное существительное.
Меняем с другой стороны. $ — «до конца строки». Значит d$ удаляет до конца строки, c$ меняет до конца строки, y$ копирует до конца строки.
Три глагола, два существительных, шесть фраз. И никто не запоминал шесть вещей.
Умножение
Вот здесь это перестаёт быть милым и становится причиной, по которой из Vim не уходят.
В Vim примерно десяток ходовых глаголов и несколько десятков существительных: w слово, $ конец строки, } абзац, G конец файла, f, до ближайшей запятой, i( внутри скобок. Вы учите не комбинации «глагол × существительное». Вы учите глаголы, учите существительные — и любая пара работает, потому что это гарантирует грамматика.
Выучили i( — «внутри скобок» — и в тот же вечер бесплатно получили di(, ci(, yi(. Выучили глагол y — и он сразу работает с каждым существительным, которое у вас уже есть.
Шпаргалка перечисляет комбинации так, будто это отдельные факты. Поэтому она такая длинная и поэтому не запоминается.
Счётчики — это прилагательные
Поставьте число впереди, и оно значит ровно то, что вы подумали. 3w — три слова вперёд. d3w — удалить три слова. 5j — пять строк вниз.
Учить нечего. Что значит «три», вы знали до того, как открыли терминал.
Где живёт магия
Знаменитый момент с Vim — тот самый, про который говорят «редактор читает мысли» — это ciw.
Разбираем: c change, i inner, w word. «Изменить внутреннее слово». Курсор может стоять где угодно внутри слова. Не в начале. Где угодно. Vim сам найдёт границы, удалит содержимое и оставит вас в режиме вставки — печатайте.
Сравните с тем, как вы делаете сейчас: двойной клик по слову или клик перед ним, Shift, клик после — и печатать. Это поход к мыши, и руки ушли с клавиатуры. ciw — три клавиши, и руки не двинулись.
А потом есть . — повторить последнее изменение. Сделали ciw, напечатали новое слово, нажали Escape. Прыгнули к следующему вхождению и нажали .. Vim повторит всю правку. Три нажатия, дальше по одному за повтор — сколько угодно раз.
Это не горячая клавиша. Это фраза, которую можно сказать ещё раз.
Почему это важнее скорости
Vim продают через скорость — самое неинтересное, что в нём есть. Ни у кого узкое место не в наборе текста.
Настоящее утверждение другое: когда редактирование становится языком, на котором вы свободно говорите, расстояние между «хочу убрать это слово» и исчезнувшим словом сжимается в ноль. Вы перестаёте планировать правки. Вы вообще перестаёте думать о редакторе. Мысль и действие приходят одновременно.
Поэтому и метрика тут не секунды, а нажатия — насколько прямо вы сказали то, что имели в виду. Меньше клавиш — лучше фраза.
Учите грамматику, а не словарь
Если забрать отсюда одно: перестаньте коллекционировать команды. Выучите как следует один глагол, выучите одно существительное — и заметьте, что они соединяются. Потом добавьте существительное. Комбинации придут сами: для этого грамматика и нужна.
Глава «Операторы» учит ровно этому, по одному глаголу за раз, прямо в браузере. Минут десять до момента, когда умножение щёлкает.