Семь вещей о Vim, которые нужно знать
1. У оригинальных клавиш перемещения (h, j, k, l) была причина появления
На первый взгляд, они кажутся случайными. Почему используются оригинальные клавиши, а не клавиши со стрелками? В 1976 году Bill Joy создал Vi. Для разработки Vi Bill использовал терминал ADM-3A. Дело в том, что на клавиатуре ADM-3A не было клавиш со стрелками. Поэтому в качестве клавиш перемещения использовались h, j, k и l.

Также обратите внимание, что клавиша ESC находится там, где обычно располагается клавиша TAB. Это счастливое совпадение позволило перемещаться между режимами и внутри файлов, не убирая руку с основной строки. Это одно из самых лучших преимуществ Vim. Доступ ко всему без необходимости постоянно двигать руками. Это отличный хак для повышения производительности.
2. Команды Vim не случайны
:q, :w, :c и так далее были выбраны неслучайно. На самом деле они интуитивно понятны, как только осознаешь, что q означает quit (выйти), w — write (записать), y — yank (копировать) и p — put (вставить). d означает delete (удалить), а a — append (добавить). И это всего лишь несколько возможных команд, когда мы разберемся с ними, можно начать составлять комбинации вроде di", что означает удалить внутри "
.
3. Вы не получите хорошие возможности, если не включите их
Стандартный пакет Vim позволяет многое, но всё равно довольно скуден. Файл .vimrc — это место, где можно включать/выключать функциональные возможности. Такие вещи, как инкрементный поиск (:set incsearch) и подсветка результатов поиска (:set hlsearch), должны быть включены, прежде чем их можно будет использовать. Даже такие вещи, как нумерация строк (:set number), попадают в эту категорию.
4. Завершение слова
Vim предлагает базовую функцию завершения слов из коробки. Оно запускается простым нажатием Ctrl+n после того, как начали вводить слово. Эта форма завершения будет искать возможность завершения в текущем файле и других открытых файлах.
Существуют и другие формы расширенного завершения, но это лишь самая простая из них.
5. Завершение тегов / Навигация по тегам
Vim очень хорошо работает с ctags. ctags — это внешняя программа, генерирующая справочный файл, содержащий все слова, которые могут понадобиться нам (например, имена функций), и их местоположение. Поскольку теперь известно местоположение каждого слова, если например есть вызов функции make_struct() и необходимо перейти к определению этой функции, можно использовать команду Ctrl+] поверх имени функции.
Vim также обращается к файлу тегов для поиска возможных вариантов завершения слов.
6. Регистры
Как и системный буфер обмена, Vim использует специальный регистр для хранения всего, что копируется и вырезается. Но Vim идет немного дальше. У него есть разные типы регистров, которые можно использовать гораздо более гибко. Пронумерованные регистры (0-9) хранят копирование и вырезание в хронологическом порядке, а именованные регистры (a-z) могут использоваться для хранения всего, что мы захотим (ay скопирует содержимое в регистр a, а ap вставит это же содержимое). С содержимым каждого регистра всегда можно ознакомиться с помощью команды :registers.
7. Сессии
Vim может хранить сессии. Сессия включает в себя каждый открытый буфер, позицию курсора, то есть текущее состояние программы. Сессия сохраняется в файле .vim и может быть использована для восстановления той же сессии позже. :mksession или :mks — команда, используемая для сохранения сессии. Для восстановления сессии используется команда :source или :so, например: :so my-session.vim.
Это семь вещей из бесконечно списка, которые нужно знать о Vim. Все вместе они делают Vim потрясающим инструментом.