С чего начать Первые шаги трек · 15 ступеней
Linux Labs

vim — редактирование файлов в терминале

4 мин vim / vi

Минимум для правки конфигов в терминале; Esc всегда возвращает в режим Normal, где буквы — команды, а не текст.

Шпаргалка

8 команд Версия для печати
  • i войти в режим вставки, чтобы печатать текст
  • Esc вернуться в Normal
  • :w сохранить
  • :q выйти
  • :wq сохранить и выйти
  • :q! выйти без сохранения
  • /текст искать вперёд по файлу
  • :%s/a/b/gc заменить во всём файле с подтверждением каждой замены

Обзор

vim/vi есть почти везде — уметь хотя бы выйти и сохранить обязательно. Ключевая идея — режимы:

  • Normal (по умолчанию) — навигация и команды;
  • Insert — набор текста (вход: i);
  • Visual — выделение (вход: v);
  • Command — команды через : (сохранить/выйти).

Esc всегда возвращает в Normal.

Ключи

5

Флаги командной строки, а не команды внутри редактора: vim +42 file открывает файл сразу на строке 42, vim -R file — только для чтения (защита от случайной правки), vim -u NONE запускает без личного ~/.vimrc — полезно, когда нужно проверить, не конфиг ли ломает поведение.

Ключ Что делает Пример
-R Открыть файл только для чтения — защита от случайной правки. vim -R /etc/nginx/nginx.conf
+N Открыть файл сразу на строке N. vim +42 file
-u FILE Запустить с указанным vimrc вместо личного; NONE — вообще без конфига. vim -u NONE file
-d Режим сравнения двух файлов бок о бок (diff mode). vim -d file1 file2
-p Открыть несколько файлов во вкладках. vim -p file1 file2

Ничего не найдено. Попробуй запрос короче.

Рецепты

3

Выход и сохранение

i              войти в режим вставки (печатать текст)
Esc            вернуться в Normal
:w             сохранить
:q             выйти
:wq  или  ZZ   сохранить и выйти
:q!  или  ZQ   выйти БЕЗ сохранения (отменить правки)
:x             сохранить (только если были изменения) и выйти
:w !sudo tee % > /dev/null   сохранить файл, открытый без прав (трюк)

Навигация и правка

h j k l        влево/вниз/вверх/вправо   ( w/b — по словам вперёд/назад )
gg / G         в начало / в конец файла  ( :N — к строке N )
0 / ^ / $      в начало / к 1-му непробелу / в конец строки
/текст  Enter  поиск вперёд (n след., N назад); ?текст — назад
dd / yy / p    удалить строку / копировать / вставить
dw / cw        удалить / заменить слово   ( x — символ, D — до конца строки )
3dd / 5j       счётчик перед командой (удалить 3 строки / вниз на 5)
v / V / Ctrl+v выделение: символ / строка / блок (далее d, y)
u / Ctrl+r     отмена / повтор   ( . — повторить последнюю правку )
:%s/old/new/g  заменить во всём файле   ( /gc — с подтверждением каждой )

Полезное

:set number          номера строк ( :set nonumber — убрать )
:set paste           не ломать отступы при вставке мышью
:noh                 убрать подсветку поиска
:sp file / :vsp file разделить окно гориз./вертик. ( Ctrl+w + стрелки — переход )
ma … `a              поставить метку a и прыгнуть к ней
:e!                  перечитать файл, отбросив правки
gg=G                 авто-отступ всего файла
~/.vimrc             конфиг: set number / set expandtab / syntax on

Неполадки

5

Застрял, всё ломается при наборе

Ты в Normal, буквы — команды. Esc, затем :q! чтобы выйти без сохранения, и начни аккуратно (i для ввода).

Не сохранить: «E212: Can't open file for writing»

Нет прав (открыл не под sudo). Сохрани через :w !sudo tee % > /dev/null или выйди :q! и sudo vim file.

Вставка мышью «лесенкой» ломает отступы

:set paste перед вставкой (в Insert auto-indent добавляет лишнее), затем :set nopaste.

Случайно наделал правок

u отменяет по шагам; :q! выйдет, отбросив всё; :e! перечитает файл с диска.

Нужен редактор попроще

nano file — внизу подсказки (см. nano). Для конфигов ок.

См. также

  • files-basics — Навигация и файлы — ls, cd, cp, mv, rm, cat, less, head, tail, копипаст в терминале.
  • env-vars — env, export, $PATH, ~/.bashrc vs профили; почему «command not found».
Загрузка…