Данная статья представляет небольшое рассуждение и содержит мало технической информации.

Кроссплатформенный текстовый редактор vim. Название произошло от Vi Improved, то есть "улучшенный vi". На данный момент является одним из самых мощных редакторов кода. Его часто сравнивают с emacssublime text, atom. В свою очередь вим сильно выделяется среди всех других приложений своим подходом к управлению контентом, то есть текстом.

Данный редактор, а точнее идеология, заложенная в него так сильно повлияла на умы людей, что во множестве приложений есть поддержка эмуляции "vim-режима".
Прямые конкуренты редактора, указанные выше, также поддерживают возможность подключения\эмуляции "vim-режима".

Так чем же этот редактор выделяется среди других?
Ответить на этот вопрос можно одним словом - режимы. Они позволяют одним и тем же клавишам выполнять разную функциональность. Если хорошо подумать на эту тему, то большинство приложений расточительно обходится с пользователями, заставляя постоянно нажимать\удерживать клавиши-модификаторы (ctrl, alt, shift) и клавиши с алфавитно-цифровой части клавиатуры для выполнения разного рода команд. Да, в некоторых случаях это бывает удобно и необходимо, когда это можно выполнить одной рукой и не подсматривая клавиатуру, то есть когда комбинации клавиш расположены не далеко друг от друга. Честно говоря, вим тоже использует данную модель по необходимости, но основные часто используемые команды не используют клавиш-модификаторов.

Управление курсором - в большинстве приложений используются стрелки (<UP>, <DOWN>, <LEFT>, <RIGHT>). Казалось бы, что это логично. Но ведь они расположены отдельно от алфавитно-цифровой части клавиатуры, точнее вынесены в отдельную группу на клавиатуре. Это довольно удобно, когда нет опыта - время на поиск клавиш будет минимально.

Но наш редактор - вим - это редактор, в первую очередь, для "продвинутых", для тех, кто хочет повысить свою производительность.

Сразу скажу, что вы должны уметь, либо научиться печатать "вслепую". Это важно.

Если посмотреть на расположение клавиш на клавиатуре и подумать, как же можно повысить скорость работы с текстом.
1. Нам нужно в любом случае выполнять операцию набора текста - это алфавитная и цифровая части.
2. Мы должны будем управлять перемещением курсора и страницы в целом - то есть, нам нужны стрелки и клавиши пролистывания страницы.

С первым ничего поделать не можем - значит оставляем как есть. Второе решается очень просто - мы будем использовать алфавитную часть клавиатуры. Возникает вопрос - как мы будем знать когда нам нужно использовать клавишу для перемещения курсора, а когда нам нужно выполнять набор текста? И всё дело сводится к режимам.
Ввод текста назовём режимом "вставки" ("insert"), а режим управления курсора - режимом "нормальным" ("normal").
Теперь посмотрим на клавиатуру ещё раз.

Можно заметь, что две клавиши "А" (латиница - "F") и "О" (латиница - "J") имею особые метки. Эти метки предназначены для нащупывания клавиш. Метод слепого набора текста подразумевает, что вы находите эти две клавиши указательными пальцами.
Так как у нас положение пальцев на клавиатуре однозначно определено и управление курсором привычнее правой рукой, то обозначим клавиши h,j,k,l - как клавиши управления курсором.

  • h - влево (указательный палец)
  • j - вниз (указательный палец)
  • k - вверх (средний палец)
  • l - вправо (безымянный)

Такое управление курсором было заложено в первых клавиатурах - там просто не было клавиш управления курсором.
Но также, такое расположение позволяет повысить скорость по работе с текстом. Именно поэтому до сих пор это используется. Нам попросту не нужно лишний раз перемещать руку по клавиатуре.

Другим важным фактором, ускоряющим работу, является почти полный отказ от использования "мыши". Я всё же в редких случаях использую мышь для горизонтально пролистывания при сравнении файлов.

Данный редактор будет полезен тем, кто много и часто работает с текстом. Нет смысла пытаться научиться работать в виме тем, кто не хочет тратить время на обучение, а также тем, кто ожидает от редактора полноценную среду разработки. Да, из него можно сделать минимальный набор функций из современных IDE, но это не будет полноценной средой.