Vim
Vim за 13 минут: режимы, перемещение, поиск и замена, операторы, визуальный режим, окна и макросы — весь редактор на одной странице с примерами.
Vim — модальный текстовый редактор: одни и те же клавиши делают разное в зависимости от режима. Это его сила и причина первого ступора. Ниже — весь рабочий минимум на одной странице: каждая команда снабжена комментарием прямо рядом. Читай сверху вниз и пробуй в реальном Vim.
1. Запуск и режимы
Vim всегда находится в одном из режимов. Главный — Normal: клавиши это команды, а не текст. Чтобы печатать текст, надо явно войти в Insert.
vim file.txt " открыть файл в редакторе (создаст, если нет)
vim " открыть пустой буфер
vimtutor " встроенный интерактивный учебник (~30 мин) — запусти его
" Четыре основных режима:
" Normal — навигация и команды (стартовый режим). Сюда возвращает Esc
" Insert — ввод текста (как в обычном редакторе)
" Visual — выделение текста
" Command — командная строка снизу, начинается с : (например :wq)
" Esc — вернуться в Normal из любого режима (жми, если запутался)
" : — войти в командный режим (Command)
2. Выход и сохранение
Самый частый вопрос новичка: «как выйти из Vim?». Команды ниже даются из режима Normal (сначала нажми Esc).
:w " записать (сохранить) файл
:w newname " сохранить под другим именем
:q " выйти (если нет несохранённых изменений)
:wq " сохранить и выйти
:x " то же, что :wq, но пишет только при изменениях
ZZ " сохранить и выйти (без двоеточия, из Normal)
:q! " выйти БЕЗ сохранения (отбросить изменения)
ZQ " выйти без сохранения (аналог :q!)
:wq! " сохранить и выйти, игнорируя предупреждения
3. Вход в режим вставки
Разные клавиши входят в Insert в разных точках — это экономит лишние перемещения.
i " insert: вставка ПЕРЕД курсором
a " append: вставка ПОСЛЕ курсора
I " вставка в начало строки (перед первым непробельным символом)
A " вставка в конец строки
o " открыть новую строку НИЖЕ и войти в Insert
O " открыть новую строку ВЫШЕ и войти в Insert
" Esc " выйти обратно в Normal
4. Перемещение
В Normal курсор двигают буквами, а не стрелками — руки остаются на домашнем ряду.
h j k l " влево / вниз / вверх / вправо
w " в начало следующего слова
b " назад в начало слова
e " в конец слова
0 " в самое начало строки (нулевая колонка)
^ " к первому непробельному символу строки
$ " в конец строки
gg " в начало файла (первая строка)
G " в конец файла (последняя строка)
:42 " перейти на строку 42 (или 42G)
Ctrl-d " прокрутка на полэкрана вниз
Ctrl-u " прокрутка на полэкрана вверх
5. Перемещение по словам и поиск
/слово " искать «слово» вперёд, Enter — перейти
?слово " искать «слово» назад
n " к следующему совпадению (в направлении поиска)
N " к предыдущему совпадению
fx " find: прыгнуть к следующему символу x в строке
Fx " то же, но назад
tx " till: встать ПЕРЕД следующим x
Tx " till назад: встать ПОСЛЕ предыдущего x
; " повторить последний f/F/t/T
, " повторить его же в обратную сторону
* " искать слово под курсором вперёд
# " искать слово под курсором назад
:noh " убрать подсветку результатов поиска
6. Редактирование
Удаление и вставка работают через невидимый буфер обмена Vim («регистр»).
x " удалить символ под курсором
dd " удалить (вырезать) всю строку
dw " удалить слово от курсора
cc " заменить строку целиком (удалить + Insert)
cw " заменить слово (change word)
r " заменить один символ под курсором (например rX)
yy " yank: скопировать строку
p " вставить ПОСЛЕ курсора / строки
P " вставить ПЕРЕД курсором / строкой
u " undo: отменить последнее действие
Ctrl-r " redo: вернуть отменённое
. " повторить последнюю команду редактирования
7. Операторы и движения
Это ключевая идея Vim: оператор + движение = команда. Выучив операторы и движения по отдельности, ты комбинируешь их во множество команд.
" Операторы: d (delete), c (change), y (yank)
" Движения: w e $ 0 G и т.д. — задают, НА СКОЛЬКО подействует оператор
dw " delete word — удалить до начала следующего слова
d$ " удалить до конца строки
d0 " удалить до начала строки
dG " удалить до конца файла
ci" " change inside " — заменить текст ВНУТРИ кавычек
ca( " change around ( — заменить вместе со скобками
yiw " скопировать слово целиком (inner word)
" Числа-множители повторяют движение/команду:
3dd " удалить 3 строки
2dw " удалить 2 слова
5j " опуститься на 5 строк вниз
d3w " удалить 3 слова вперёд
8. Визуальный режим
Сначала выделяешь, потом применяешь операцию — наглядная альтернатива «оператор + движение».
v " Visual: посимвольное выделение
V " Visual Line: выделение целыми строками
Ctrl-v " Visual Block: прямоугольный (блочный) выбор
" Двигай курсор (h j k l, w, $...), чтобы расширить выделение, затем:
d " удалить выделенное
y " скопировать выделенное
c " заменить выделенное
> " сдвинуть выделение вправо (отступ)
< " сдвинуть выделение влево
u " сделать выделение строчными буквами
U " сделать выделение ПРОПИСНЫМИ
" Блочный режим (Ctrl-v) удобен для правки колонок:
" Ctrl-v, выдели колонку вниз (j), I — вставь текст, Esc — применится ко всем строкам
9. Поиск и замена
Команда :s (substitute) в командном режиме. Синтаксис: :[диапазон]s/что/на_что/флаги.
:s/old/new/ " заменить ПЕРВОЕ «old» на «new» в текущей строке
:s/old/new/g " заменить ВСЕ «old» в текущей строке (флаг g = global)
:%s/old/new/g " заменить во всём файле (% = все строки)
:%s/old/new/gc " то же, но с подтверждением каждой замены (c = confirm)
:%s/old/new/gi " регистронезависимо (i = ignore case)
:10,20s/old/new/g " заменить только в строках 10–20
:'<,'>s/old/new/g " заменить в текущем визуальном выделении
:%s/\s\+$// " удалить хвостовые пробелы во всём файле
10. Несколько файлов и окна
Vim держит открытые файлы в буферах и может делить экран на окна и вкладки.
:e file2.txt " открыть (edit) другой файл в текущем окне
:ls " список открытых буферов
:bn " следующий буфер (buffer next)
:bp " предыдущий буфер
:b 2 " перейти к буферу №2
:bd " закрыть текущий буфер
:sp file " split: горизонтальное разделение окна
:vsp file " vertical split: вертикальное разделение
Ctrl-w w " переключиться на следующее окно
Ctrl-w h/j/k/l " перейти в окно слева/снизу/сверху/справа
Ctrl-w q " закрыть текущее окно
:tabnew file " открыть файл в новой вкладке (табе)
gt " следующая вкладка
gT " предыдущая вкладка
:tabclose " закрыть вкладку
11. Полезное
Три приёма, ради которых Vim и любят: повтор, макросы и собственный конфиг.
. " повторить последнее изменение (самая полезная клавиша Vim)
" Макросы — запись последовательности действий:
qa " начать запись макроса в регистр a
" ...выполняешь любые команды...
q " остановить запись
@a " проиграть макрос a
@@ " повторить последний проигранный макрос
5@a " проиграть макрос a пять раз
" Маркеры — закладки в файле:
ma " поставить маркер a в текущей позиции
`a " прыгнуть точно на маркер a
'' " вернуться туда, где был до прыжка
Базовый ~/.vimrc — файл настроек, который читается при запуске:
set number " показывать номера строк
set relativenumber " относительные номера (удобно для 5j, 3dd и т.п.)
set tabstop=4 " ширина табуляции — 4 пробела
set shiftwidth=4 " размер отступа для > и <
set expandtab " заменять табы пробелами
set ignorecase " поиск без учёта регистра
set hlsearch " подсвечивать результаты поиска
set incsearch " подсветка по мере набора запроса
syntax on " подсветка синтаксиса
Официальный сайт Vim и команда :help внутри редактора — главные справочники. А vimtutor в терминале закрепит всё это руками за полчаса.