Vim — чтобы выйти и не только

Vim на каждом сервере. Когда нет VS Code — он тебя спасёт. Минимум для DevOps — на этом листе.

Самое главное: как выйти

:q       # выйти
:q!      # выйти без сохранения
:wq      # сохранить и выйти
:x       # то же что :wq
ZZ       # то же
:wqa     # сохранить и выйти из всех буферов

Режимы

Переход в insert mode

i        # перед курсором
a        # после курсора (append)
I        # в начало строки
A        # в конец строки
o        # новая строка ниже
O        # новая строка выше
s        # удалить символ и в insert

Навигация

h j k l           # ←  ↓  ↑  →
w / b             # слово вперёд / назад
e                 # конец слова
0 / $             # начало / конец строки
^                 # первый непробельный символ
gg                # начало файла
G                 # конец файла
<N>G              # строка N
%                 # к парной скобке
*                 # поиск слова под курсором
Ctrl-d / Ctrl-u   # полстраницы вниз/вверх
Ctrl-f / Ctrl-b   # страница

Удаление

x          # символ под курсором
X          # символ слева
dd         # строку (в clipboard)
dw         # слово
d$         # до конца строки
d0         # до начала строки
dG         # до конца файла
3dd        # 3 строки

Копирование / вставка

yy / Y     # копировать строку
yw         # слово
y$         # до конца строки
p          # вставить после
P          # вставить перед
3yy        # 3 строки

Замена

r<char>     # один символ
R           # replace mode
cw          # change word
cc          # change line
ct<char>    # change до символа
~           # сменить регистр символа
guu / gUU   # строка → нижний / верхний регистр

Поиск

/pattern   # поиск вперёд
?pattern   # поиск назад
n / N      # следующее / предыдущее
*          # слово под курсором
:noh       # снять подсветку

# Подсветка
:set hlsearch
:set ignorecase

Find & Replace

:s/old/new/             # на текущей строке, первое совпадение
:s/old/new/g            # все на строке
:%s/old/new/g           # ★ во всём файле
:%s/old/new/gc          # с подтверждением каждого
:5,10s/old/new/g        # на строках 5-10
:%s/old/new/gI          # case insensitive

Visual mode

v          # visual по символам
V          # visual по строкам
Ctrl-v     # ★ visual block (колонка)
> / <      # indent / unindent
d / y      # удалить / копировать выделенное
=          # auto-indent

Несколько окон

:vsp file        # вертикальное разделение
:sp file         # горизонтальное
Ctrl-w h/j/k/l   # переключение между окнами
Ctrl-w c         # закрыть окно
Ctrl-w =         # выровнять размеры
:tabnew file     # новый таб
gt / gT          # next / prev tab

Буферы

:ls                  # список буферов
:b <N>               # переключиться на буфер N
:bnext / :bprev      # следующий / предыдущий
:bd                  # закрыть текущий буфер

Полезные команды

u                  # undo
Ctrl-r             # redo
.                  # повторить последнее действие
:e!                # перечитать с диска
:e file            # открыть файл
:r file            # вставить содержимое файла
:r !date           # вставить вывод команды
:!command          # выполнить shell-команду
:!! ls             # выполнить и вставить (в командной строке)
:set number        # номера строк
:set paste         # paste mode (отключает auto-indent)
:set nopaste       # обратно

Минимальный ~/.vimrc

set nocompatible
syntax on
set number
set relativenumber
set tabstop=4
set shiftwidth=4
set expandtab
set autoindent
set smartindent
set hlsearch
set incsearch
set ignorecase
set smartcase
set clipboard=unnamedplus
set mouse=a
set scrolloff=8
filetype plugin indent on

" YAML
autocmd FileType yaml setlocal ts=2 sts=2 sw=2 expandtab

Быстрая прокачка: vimtutor

vimtutor          # встроенный 30-минутный туториал. Пройди один раз.

Совет: не пытайся знать всё. Освой 20 команд выше — этого хватит на 95% продакшен-задач.