Vim — чтобы выйти и не только
Vim на каждом сервере. Когда нет VS Code — он тебя спасёт. Минимум для DevOps — на этом листе.
Самое главное: как выйти
:q # выйти
:q! # выйти без сохранения
:wq # сохранить и выйти
:x # то же что :wq
ZZ # то же
:wqa # сохранить и выйти из всех буферов
Режимы
- Normal (по умолчанию) — навигация, команды
- Insert — печатать как обычно. i чтобы войти, Esc чтобы выйти
- Visual — выделение. v вход
- Command — после :
Переход в 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% продакшен-задач.