К сведенью

У меня есть друг, он уже 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Показать текущую директорию

💡 Как использовать:

  1. Нажмите : — перейдёте в командный режим.
  2. Введите ! и команду, например: !ls
  3. Нажмите Enter
  4. Результат выполнится, и вы вернётесь в 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Сохранить выделенные строки (в режиме визуального выделения)

Лайвхак

  1. Нажмите клавишу v (перейдите в режим выделения) и переместите каретку, обратите внимание, что выбранный текст подсвечен.
  2. Нажмите клавишу с символом : и внизу экрана появится  :'<,'>
  3. Наберите команду  w TEST  (здесь TEST - файл, который ещё не существует). в командной строке должно быть  :'<,'>w TEST  и нажмите клавишу ENTER.
  4. По этой команде выбранные строки будут записаны в файл TEST.

🎯 Как использовать:

  1. Узнайте номера строк (можно использовать Ctrl-g).
  2. Введите команду вида :1,3w test.txt
  3. 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 — запустить сборку, не выходя из Vim
  • zo / 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 быстрее, точнее и приятнее.