К сведенью
У меня есть друг, он уже 20 лет работает в Vim, он просто не знает как из него выйти.
Эта шпаргалка охватывает базовые команды, которые изучаются в ходе прохождения vimtutor и не только.
📚 Как начать обучение
Настоятельно рекомендую пройти vimtutor, в терминале введите:
vimtutorОн проведёт вас по всем этим командам шаг за шагом.
Важно
Если вы просто скопируете эту шпаргалку на свой 🖥️комлюктер, то она вам не поможет. Необходимо пройти
vimtutor
📌 Основные режимы
- Обычный режим (Normal mode) — основной режим, с которого начинается работа.
- Режим вставки (Insert mode) — для ввода текста.
- Командный режим (Command mode) — для выполнения команд (например, сохранение, выход).
Info
Esc или CTRL+C - выйти в Normal mode
🔁 Переход между режимами
| Команда | Действие |
|---|---|
i | Вставить текст перед курсором (вход в режим вставки) |
a | Вставить текст после курсора (вход в режим вставки) |
o | Новая строка под текущей, ввод (режим вставки) |
O | Новая строка над текущей, ввод (режим вставки) |
<Esc> | Возврат в обычный режим из любого другого |
🚶 Перемещение курсора (в обычном режиме)
| Клавиша | Действие |
|---|---|
h | ← влево |
j | ↓ вниз |
k | ↑ вверх |
l | → вправо |
w | Вперёд на слово (к началу следующего слова) |
b | Назад на слово (к началу предыдущего слова) |
0 | В начало строки |
^ | В начало текста строки |
$ | В конец строки |
G | В конец файла (на последнюю строку) |
1G | На первую строку файла |
5G | На 5-ю строку (цифра может быть любой) |
() | к началу/концу предложения |
| {} | к началу/концу параграфа |
✏️ Редактирование текста
| Команда | Действие |
|---|---|
x | Удалить символ под курсором |
dd | Удалить всю строку |
dw | Удалить от курсора до конца слова |
d$ | Удалить от курсора до конца строки |
d0 | Удалить от курсора до начала строки |
u | Отменить последнее изменение |
U | Отменить все изменения в текущей строке |
Ctrl-r | Повторить отменённое действие (redo) |
ce | Изменить окончание слова |
cc | Изменить всю строку |
🔤 Вставка и добавление текста
| Команда | Действие |
|---|---|
i | Вставить перед курсором |
a | Добавить после курсора |
A | Добавить в конец строки |
o | Новая строка ниже, ввод |
O | Новая строка выше, ввод |
p | Вставка, только что удаленного текста |
R | Режим замены |
📘 ОПЕРАТОРЫ И ОБЪЕКТЫ
В Vim большинство действий строятся по принципу:
Оператор + Объект = Действие
- Оператор — что вы хотите сделать (например, удалить, скопировать, изменить).
- Объект — на чём вы это делаете (например, слово, строка, до конца строки).
✅ Примеры:
| Команда | Что делает |
|---|---|
dw | Удалить слово (delete + word) |
d$ | Удалить от курсора до конца строки (delete + до $) |
dd | Удалить всю строку (специальный случай: d дважды — строка) |
cw | Изменить слово (change + word) |
c$ | Изменить от курсора до конца строки |
yy | Скопировать строку (yank + строка) |
yw | Скопировать слово (yank + word) |
yl | Скопировать символ |
dl | Вырезать символ |
🔁 Важно:
- Вы можете использовать оператор в обычном режиме, затем указать объект.
- Например:
d→ нажимаетеw→ удаляется слово.c→ нажимаетеw→ слово удаляется, и вы переходите в режим вставки.
Info
Если вы нажали оператор, но передумали — нажмите
<Esc>, чтобы отменить.
🔂ПРИМЕНЕНИЕ СЧЁТЧИКА СОВМЕСТНО С ОБЪЕКТАМИ
💡 Основная идея:
Вы можете указать число (счётчик) перед командой, чтобы повторить действие несколько раз.
Синтаксис:
[число][оператор][объект]
✅ Примеры:
| Команда | Что делает |
|---|---|
2w | Перейти вперёд на 2 слова |
3e | Перейти к концу 3-го слова |
4j | Перейти на 4 строки вниз |
5l | Перейти на 5 символов вправо |
2dw | Удалить 2 слова |
3dd | Удалить 3 строки, начиная с текущей |
2x | Удалить 2 символа под курсором |
3yy | Скопировать 3 строки |
2dd | Удалить 2 строки |
4x | Удалить 4 символа справа от курсора |
3dw | Удалить 3 слова |
5dd | Удалить 5 строк сразу |
🔍 Как это работает:
- Счётчик умножает действие.
- Например,
3w— это как трижды нажатьw.
💡 Полезно: вместо
www— просто3w.
🛠 Советы:
- Используйте
uдля отмены (undo), если удалите слишком много. .— повторит последнюю команду изменения, например, если вы удалили слово —.удалит следующее.
💡 Например:
dw— удалили слово..— удалили следующее слово.- Ещё раз
.— и так далее.
🧩 Обобщение: Структура команд Vim
[счётчик] [оператор] [счётчик] [объект]
Примеры:
3d2w— удалить 3 раза по 2 слова (всего 6 слов).- На практике чаще используют:
d3w— удалить 3 слова.
📌 Подсказки из vimtutor
- Не бойтесь ошибаться — используйте
uдля отмены. - Повторяйте команды с разными счётчиками, чтобы почувствовать ритм.
.— ваш лучший друг при повторяющихся действиях.
ℹ️ ИНФОРМАЦИЯ О ФАЙЛЕ И ПОЗИЦИЯ КАРЕТКИ
🔎 1. Показать позицию каретки: Ctrl-g
Нажмите Ctrl-g и появляется строка внизу экрана с информацией о текущем положении курсора.
Пример вывода:
"myfile.txt" line 10 of 25 --40%-- col 15
Расшифровка:
| Элемент | Значение |
|---|---|
"myfile.txt" | Имя открытого файла |
line 10 of 25 | Вы находитесь на строке 10 из 25 (всего в файле 25 строк) |
--40%-- | Примерно 40% файла пройдено (по строкам) |
col 15 | Курсор находится в 15-м столбце (символе) текущей строки |
Info
Это очень полезно, когда вы работаете с большим файлом и хотите понять, где вы: в начале, середине или конце.
🧭 2. Как использовать Ctrl-g на практике
- Нажмите
Ctrl-g, чтобы увидеть, где вы. - Переместитесь (например, с помощью
G— в конец файла, илиgg— в начало). - Введите номер строки, на которой были ранее (значение отобразится внизу экрана), затем прожмите
G— перейдете на за заданную строку.
🛠 4. Зачем это нужно?
- Понимать, насколько вы продвинулись по файлу.
- Быстро переходить к нужной строке, например:
15G— перейти к строке 15.:15— то же самое.
- Удобно при редактировании больших файлов, логов, программного кода.
🔍 Поиск и замена
| Команда | Действие |
|---|---|
/слово | Поиск слова вперёд (например, /test) |
/слово\с | Поиск слова вперёд не учитывать регистр |
?слово | Поиск слова назад |
n | Следующее совпадение |
N | Предыдущее совпадение |
:s/старое/новое | Заменить первое вхождение в строке |
:s/старое/новое/g | Заменить все вхождения в строке |
:%s/старое/новое/g | Заменить все вхождения в файле |
:%s/старое/новое/gc | С подтверждением для каждого |
Поиск парных скобок
Поместите каретку на любую из скобок
( [ {Теперь нажмите на клавиатуре клавишу с символом%, Каретка будет перемещена на парную скобку для той скобки, на которой установлена каретка
💾 Сохранение и выход
| Команда | Действие |
|---|---|
:w | Сохранить файл |
:q | Выйти из Vim |
:q! | Выйти без сохранения (если были изменения) |
:wq или :x | Сохранить и выйти |
ZZ | Быстрый выход с сохранением (аналог :x) |
ZQ | Быстрый выход без сохранения (аналог :q!) |
:e | отменить изменения |
🧩 Полезные команды
| Команда | Действие |
|---|---|
. | Повторить последнее изменение |
r | Заменить один символ (например, rx — заменить символ на x) |
R | Переход в режим замены (overwrite) |
~ | Изменить регистр символа под курсором |
v | Выделить символы (по одному), затем можно d или y |
yy | Скопировать (yank) строку |
p | Вставить после курсора |
P | Вставить перед курсором |
🧰 Как вызвать из редактора внешнюю команду
Вы можете выполнить команду оболочки (shell), не выходя из Vim. :!команда
✅ Примеры:
| Команда в Vim | Что делает |
|---|---|
:!ls | Показать список файлов (в Linux/macOS) |
:!dir | Показать список файлов (в Windows) |
:!date | Показать текущую дату и время |
:!pwd | Показать текущую директорию |
💡 Как использовать:
- Нажмите
:— перейдёте в командный режим. - Введите
!и команду, например:!ls - Нажмите
Enter - Результат выполнится, и вы вернётесь в Vim.
После выполнения команды нажмите
Enter, чтобы вернуться к редактированию.
🎯 Зачем это нужно:
- Проверить, есть ли файл, который вы хотите открыть.
- Убедиться в пути к файлу.
- Выполнить быструю задачу без выхода из Vim.
💾 Как записать файл (сохранить)
Сохранение изменений в текущий файл :w
💡 Примечания:
- Если файл ещё не был сохранён, Vim попросит указать имя.
- Если вы редактируете уже существующий файл —
:wпросто сохранит изменения.
Важно
:wне выходит из Vim — вы продолжаете редактировать.
✂️ Выборочная запись строк (сохранение части файла)
Вы можете сохранить не весь файл, а только выбранные строки :нач_строка,кон_строка w имя_файла
✅ Примеры:
| Команда | Что делает |
|---|---|
:1,5w myfile.txt | Сохранить строки с 1 по 5 в файл myfile.txt |
:10,20w temp.txt | Сохранить строки 10–20 в файл temp.txt |
:.,$w tail.txt | Сохранить от текущей строки до конца в tail.txt |
:'<,'>w part.txt | Сохранить выделенные строки (в режиме визуального выделения) |
Лайвхак
- Нажмите клавишу v (перейдите в режим выделения) и переместите каретку, обратите внимание, что выбранный текст подсвечен.
- Нажмите клавишу с символом
:и внизу экрана появится:'<,'>- Наберите команду w TEST (здесь TEST - файл, который ещё не существует). в командной строке должно быть
:'<,'>w TESTи нажмите клавишуENTER.- По этой команде выбранные строки будут записаны в файл TEST.
🎯 Как использовать:
- Узнайте номера строк (можно использовать
Ctrl-g). - Введите команду вида
:1,3w test.txt - Vim создаст (или перезапишет) файл
test.txtс этими строками.
💡 Полезно для извлечения фрагментов текста, например, примеров кода.
4. 📥 Считывание и объединение файлов
Вы можете вставить содержимое другого файла прямо в текущий :r имя_файла
✅ Примеры:
| Команда | Что делает |
|---|---|
:r notes.txt | Вставить содержимое notes.txt под текущей строкой |
:r !date | Вставить результат команды date в файл |
:r !ls | Вставить список файлов в текущий документ |
:r !whoami | Вставит имя текущего пользователя |
💡 Полезные советы из vimtutor
- Используйте
:!lsперед:r, чтобы убедиться, что файл существует. :wи:r— ключевые команды для работы с файлами.- Комбинация
:r !позволяет вставлять динамические данные (дата, время, вывод программ). - Не бойтесь экспериментировать — используйте
uдля отмены.
ВСТРОЕННАЯ СПРАВОЧНАЯ СИСТЕМА
- наберите
:help- Нажмите
CTRL-wдля перемещения каретки из одного окна в другое окно:qдля выхода из справочной системы
🚀 Бонус: полезные фишки Vim (вне vimtutor)
| Команда | Что делает | Зачем это полезно |
|---|---|---|
:set number или :set nu | Показывает номера строк | Удобная навигация и ориентация в файле |
:set relativenumber или :set rnu | Показывает относительные номера строк (от курсора) | Удобно с командами вроде 5j, 10G, d2k — видно, сколько строк двигаться |
zz | Центрирует текущую строку по центру экрана | Удобно при чтении |
zt | Перемещает текущую строку в начало экрана | Полезно при длинных файлах |
zb | Перемещает текущую строку в конец экрана | — |
Ctrl-d | Пролистать вниз на полстраницы | Быстрее, чем j |
Ctrl-u | Пролистать вверх на полстраницы | Быстрее, чем k |
Ctrl-f | Пролистать вниз на страницу (Page Down) | — |
Ctrl-b | Пролистать вверх на страницу (Page Up) | — |
* | Найти следующее вхождение слова под курсором | Очень быстро! Навели курсор — нажали * — ищет |
# | То же, но в обратном направлении | Поиск назад по слову |
gd | Перейти к определению переменной/слова (в коде) | Полезно в программировании |
gD | То же, но ищет в текущей функции | — |
:%s/старое/новое/gc | Заменить с подтверждением (c = confirm) | Безопасная замена — Vim спросит: “заменить?” |
:nohlsearch или :noh | Убрать подсветку поиска | После поиска всё подсвечено — :noh мгновенно уберёт |
Ctrl-^ | Переключиться на предыдущий файл (:e#) | Удобно при работе с двумя файлами |
gf | Перейти к файлу, имя которого под курсором | Если курсор на main.py — откроет его (если есть) |
[ и ] | Навигация по изменениям:[ — назад, ] — вперёд | Как u, но для перехода между изменениями без отмены |
Ctrl-o | Перейти к предыдущей позиции (jump back) | История перемещений |
Ctrl-i | Перейти к следующей позиции (jump forward) | Обратно к Ctrl-o |
:bd | Закрыть текущий буфер (файл) | Вместо :q, если открыто несколько файлов |
:e . | Открыть файловый менеджер (браузер файлов) | Удобный просмотр папки (работает, если установлен) |
g; | Перейти к предыдущему месту редактирования | История позиций курсора при правке |
g, | Перейти к следующему такому месту | — |
💡 Полезные сочетания
:w !sudo tee %— сохранить файл, если забыли открыть черезsudo(Linux/macOS):!make— запустить сборку, не выходя из Vimzo/zc— раскрыть / свернуть блок (в файлах с отступами, например, Python, Markdown):vsp file.txt— открыть файл в вертикальном сплите:sp file.txt— в горизонтальном сплите
🧠 Совет
Добавьте в ~/.vimrc:
set number
set relativenumber
set incsearch
set hlsearch
set ignorecase
set smartcase— и Vim станет гораздо удобнее.
✅ Эти фишки не входят в vimtutor, но делают работу в Vim быстрее, точнее и приятнее.