Семь вещей о 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 потрясающим инструментом.