Любой новичок задаёт этот вопрос в первые тридцать секунд: почему стрелки живут на h, j, k, l?
Честный ответ состоит из двух половин. Историческая — случайность. Практическая — причина, по которой случайность не исправили за пятьдесят лет.
Случайность
Билл Джой написал vi в 1976 году в Беркли. Написал на том терминале, что у него был: Lear Siegler ADM-3A.
Найдите фотографию этой клавиатуры. На ней нет стрелок — точнее, они есть, и нарисованы прямо на клавишах h, j, k, l. Эти четыре клавиши работали на две ставки: обычно буквы, а с зажатым Control — перемещение курсора.
Поэтому, когда Джою понадобились клавиши движения, он ничего не проектировал. Он взял те, что уже были нарисованы на пластике перед ним.
Вот и всё. Вся история. Самая узнаваемая черта самого принципиального текстового редактора в мире — это решение по раскладке, принятое производителем терминалов, который разорился десятки лет назад.
Раз уж смотрите на фото, обратите внимание ещё на две вещи. Escape стоит там, где у вас Tab — вплотную к Q, достаётся ленивым мизинцем. А Control — там, где Caps Lock. Половина эргономики Vim рассчитана на клавиатуру, которой почти ни у кого нет со времён Картера.
Почему это всё-таки выжило
Вот что удивляет: случайность оказалась правильной — по причине, не имеющей отношения к 1978 году.
Положите правую руку на домашний ряд. Указательный палец лежит на j. Теперь h, j, k, l — прямо под четырьмя пальцами, которые уже там. Курсор двигается, рука не двигается.
А теперь потянитесь к стрелкам. Рука уходит с домашнего ряда в правый нижний угол, делает своё дело и возвращается. Потом пальцы заново нащупывают позиции — доля секунды, каждый раз.
Этот поход туда-обратно и есть весь аргумент. Не скорость набора — положение рук. Весь дизайн Vim исходит из того, что руки не уходят с домашнего ряда; поэтому и выход из режима вставки, и операторы, и счётчики, и текстовые объекты втиснуты в три средних ряда.
Стрелки это допущение ломают. hjkl — сохраняет. То, что это нашли случайно, не делает его менее верным.
Где какая
Мнемоника, которая правда работает:
h— слева, и двигает влево.l— справа, и двигает вправо.j— у неё хвостик свисает вниз под строку. Вниз.k— оставшаяся. Вверх.
Кому-то ближе: j похожа на стрелку вниз. В любом случае вы перестанете об этом думать примерно через двадцать минут использования — навсегда.
Ловушка, которой стоит избежать
Vim поддерживает стрелки. Они работают. В этом и проблема.
Если оставить себе стрелки как запасной выход, вы будете ими пользоваться — потому что они привычны, а hjkl пока нет. Через две недели вы всё ещё будете тянуться, руки всё ещё будут уходить с ряда, и вы сделаете вывод, что знаменитая эргономика Vim переоценена — так её и не попробовав.
Многие на первые две недели отключают стрелки именно поэтому. Это не пуризм. Просто выгода появляется по ту сторону привычки, а стрелки держат вас по эту.
Суть
hjkl — не самое интересное в Vim. Это шлагбаум: маленькое, слегка нелепое препятствие перед настоящей вещью — грамматикой редактирования текста.
Но объехать его нельзя, потому что все остальные команды рассчитаны на руки в домашнем ряду. Так что заплатите пошлину сразу. Она стоит один вечер.
Первая ката — это только hjkl. Минута в браузере, и это последний раз, когда вы задались этим вопросом.