Семь вещей о Vim, которые нужно знать

Источник: «7 Things You Should Know about Vim»
В этой статье я хотел бы объяснить некоторые вещи о Vim, которые большинство людей не знают. От причин, по которым он был разработан таким, какой он есть. До некоторых замечательных скрытых функций, которые вы, вероятно, (ещё) не используете.

1.  У оригинальных клавиш перемещения (h, j, k, l) была причина появления

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

Клавиатура терминала ADM-3A
Клавиатура терминала ADM-3A

Также обратите внимание, что клавиша ESC находится там, где обычно располагается клавиша TAB. Это счастливое совпадение позволило перемещаться между режимами и внутри файлов, не убирая руку с основной строки. Это одно из самых лучших преимуществ Vim. Доступ ко всему без необходимости постоянно двигать руками. Это отличный хак для повышения производительности.

2. Команды Vim не случайны

:q, :w, :c и так далее были выбраны неслучайно. На самом деле они интуитивно понятны, как только осознаешь, что q означает quit (выйти), wwrite (записать), yyank (копировать) и pput (вставить). d означает delete (удалить), а aappend (добавить). И это всего лишь несколько возможных команд, когда мы разберемся с ними, можно начать составлять комбинации вроде 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 потрясающим инструментом.

Дополнительные материалы

Предыдущая Статья

Gulp 4: Сквозные исходные потоки

Следующая Статья

Vim: Стань HTML-ниндзя с Emmet