Как отсюда выйти: шпаргалка по Vim

Вы собираетесь создать файл crontab и внезапно оказываетесь в этом странном редакторе по умолчанию. В том, в котором всё никак не разберётесь.

ESC? Ничего не произошло. CTRL + C? Нет. ESC ESC ESC? Неа. Вы в тупике.

Ну вот, опять. Склонив голову от стыда, вы запускаете очередной терминал, чтобы исполнить команду killall vim и продолжить заниматься своими делами.

С вами бывало такое? Конечно, бывало. Что ж, потратив несколько минут на эту статью, вы познакомитесь с основами редактора Vim (и научитесь быстро выходить из него).

Vim по умолчанию установлен во многих операционных системах (включая большинство дистрибутивов Linux и macOS), поэтому хотя бы поверхностные знания о нём лишними не будут. Откройте терминал и введите vim.

В умелых руках Vim может стать мощнее многих IDE. И, разумеется, он не ест сотни мегабайт памяти лишь для отображения пустого файла (да, Eclipse, это о тебе).

Основы

Некоторые из нижеописанных команд начинаются с двоеточия: нажав его, появится подсказка, в которой будет указана полная команда. Команды без двоеточий — это скорее горячие клавиши, которые можно использовать в режиме по умолчанию (в нём запускается Vim). Команды, написанные ЗАГЛАВНЫМИ БУКВАМИ — это отдельные клавиши: например, ESC — это клавиша Esc на вашей клавиатуре.

Все команды чувствительны к регистру и должны выполняться вне режима insert.

Выход из Vim

Выход без сохранения изменений:

:q!

Как запомнить: quit dammit! (закройся, чёрт возьми!)

Выход с сохранением изменений:

:wq

Как запомнить: write to disk and quit

Для перемещения по открытому файлу используйте стрелки.

Перемещение на строку 285:

:285

Поиск слова «import»:

/import

Изменение текста

Вставка текста там, где стоит курсор:

i

Как запомнить: insert

Вставка текста в конце текущей строки:

A

Как запомнить: Append

Выход из режима редактирования (возврат в стандартный режим):

ESC

Выделение текста

Переход в визуальный режим:

v

Как запомнить: visual

Для выделения текста используйте стрелки.

Выход из визуального режима:

ESC

Копирование, удаление, вставка

Копирование выделенного текста в буфер:

y

Как запомнить: yank

Удаление выделенного текста:

d

Как запомнить: delete

Копирование текущей строки в буфер:

yy

Как запомнить: yank yank

Копирование трёх строк, включая текущую, в буфер:

3yy

Удаление текущей строки и помещение её в буфер:

dd

Как запомнить: delete delete

Удаление 5 строк, включая текущую:

5dd

Вставка из буфера перед текущей строкой:

P

Примечание: заглавная P

Вставка из буфера после текущей строки:

p

Отмена и восстановление последнего изменения

Отмена последнего изменения:

u

Как запомнить: uh-oh 🙂

Восстановление последнего отменённого изменения:

CTRL + R

Вывод изменений:

:undolist

Отмена двух последних изменений:

2u

Многоуровневое дерево отката изменений Vim очень мощное, подробнее о нём можно почитать в документации.

Работа с файлом

Открытие файла index.html вместо текущего:

:edit index.html

Сохранение текущего файла:

:w

Как запомнить: write to disk

Сохранение файла с изменённым именем, например, changes.txt:

:w changes.txt

Поиск и замена

Поиск и замена всех вхождений строки в файле:

:%s/typo/corrected/g

Поиск и замена с запросом подтверждения замены:

:%s/typo/corrected/gc

Как запомнить: confirm

Подсветка синтаксиса и отступы

Включение подсветки синтаксиса:

:syntax on

Включение автоматических отступов:

:set autoindent

Увеличение отступов нескольких строк при выделении их в визуальном режиме:

>

Вкладки

Открытие server.py в новой вкладке:

:tabe server.py

Как запомнить: tab edit

Переход на вкладку справа:

:tabn

Как запомнить: tab next

Переход на предыдущую вкладку слева:

:tabp

Как запомнить: tab previous

Для закрытия вкладки переключитесь на неё и используйте команду :q или :wq.

Разделённый экран

Открытие templates/base.html в режиме вертикального разделения экрана:

:vs templates/base.html

Как запомнить: vertical split

Открытие shared.js в режиме горизонтального разделения экрана:

:sp shared.js

Как запомнить: the ’default’ horizontal split

Перемещение между «частями» экрана:

CTRL + W + ARROW KEYS

Для закрытия экрана переключитесь на него и используйте команду :q или :wq.

Настройка Vim: файл .vimrc

Многие команды, используемые для изменения вида и поведения Vim, можно сделать включёнными по умолчанию, поместив их в .vimrc — файл конфигурации Vim, который расположен в домашнем каталоге.

Например, добавление этих строк в ~/.vimrc сделает подсветку синтаксиса и автоматическую корректировку отступов включёнными по умолчанию:

syntax on
set autoindent

Идеи для кастомизации Vim можно почерпнуть в этом GitHub-репозитории.

Полезные ресурсы

Вот ещё несколько полезных материалов для изучения Vim:

А какая команда Vim — ваша любимая? Может, вы знаете удобные приёмчики? Делитесь ими в комментариях!

Перевод статьи «How the hell do I exit: A beginner's guide to Vim»