Vim: 7 вещей, которые вы должны знать

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

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

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

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

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

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

:q, :w, :c и прочие команды не были выбраны случайно. На самом деле они становятся интуитивно понятными, если вы понимаете, что q это quit (выход), w - write (запись), y - yank (копирование) и p - put (вставка). d - delete (удаление) и a - append (добавление). И это всего лишь пара возможных команд. Как только мы обдумаем их, мы сможем начать создавать комбинации команд, такие как di - delete inside, что означает удаление внутри.

3. Вы не получите крутые возможности, если не включите их

Стандартный набор Vim позволяет много, но всё равно довольно слабый. В файле .vimrc мы можем включать/отключать функциональные возможности. Такие тонкости, как инкрементный поиск :set incsearch и выделение результатов поиска :set hlsearch, должны быть включены, что бы ими можно было воспользоваться. Даже нумерация строк :set number попадает в эту категорию.

Обратите внимание, что команда :set включает функциональные возможности для текущего сеанса. Если мы хотим, что бы они были включены для всех сеансов, их необходимо добавить в файл конфигурации Vim - .vimrc.

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

P.S. Восьмая вещь, которую многие не знают.

Большинство при выходе из Vim сохраняет файл командой :wq!. То есть принудительно сохранить файл, даже если не было изменений и выйти. Но есть более короткая и удобная команда :x - если не было изменений - выйти, если были сохранить и выйти.

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

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

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

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

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