Введение / Зачем это нужно
Vim (Vi IMproved) — это мощный текстовый редактор, работающий прямо в терминале. Его знание критически важно для администрирования Linux-серверов, где часто нет графического интерфейса. Этот гайд развеет миф о сложности Vim и даст вам практические навыки для повседневной работы: редактирования конфигурационных файлов, просмотра логов, быстрых правок кода. Вы перестанете бояться черного экрана и научитесь эффективно работать без мыши.
Требования / Подготовка
- Установленный Vim. В большинстве дистрибутивов он предустановлен. Проверьте:
vim --version. Если нет, установите:sudo apt install vim(Debian/Ubuntu) илиsudo yum install vim(RHEL/CentOS). - Терминал (konsole, gnome-terminal, xterm и т.д.).
- Базовое понимание командной строки (cd, ls).
- Права на запись в директорию, где будете создавать/редактировать файлы.
Шаг 1: Запуск Vim и понимание интерфейса
Откройте терминал и создайте тестовый файл:
vim test.txt
Вы увидите экран, похожий на этот:
"test.txt" [New File]
~
~
~
~
~
~
~
~
Что это значит:
- Строка вверху (
"test.txt" [New File]) — статус. - Тilde (
~) обозначает пустые строки после конца файла. - Самое главное: вы находитесь в Normal mode (иногда called Command mode). В этом режиме каждая нажатая клавиша — это команда Vim, а не символ для ввода. Если вы начнете печатать, ничего не появится. Это нормально.
Шаг 2: Переключение в режим вставки (Insert mode)
Чтобы начать редактировать текст, нужно перейти в Insert mode.
- Нажмите клавишу
i(латинскаяi). - Внизу экрана появится подсказка
-- INSERT --. - Теперь печатайте текст как в обычном редакторе. Например, введите:
Привет, мир! Это мой первый файл в Vim.
Быстрые варианты входа в Insert mode:
i— вставить перед курсором (самый частый).I— вставить в начало текущей строки.a— вставить после курсора.A— вставить в конец текущей строки.o— создать новую строку ниже текущей и перейти в Insert mode.O— создать новую строку выше текущей.
Шаг 3: Навигация по файлу без мыши
Когда закончили ввод, нажмите Esc — вы вернетесь в Normal mode. Теперь управляйте курсором:
Базовые движения (одна клавиша):
h — влево
j — вниз
k — вверх
l — вправо
Быстрые перемещения:
w— перейти к началу следующего слова.b— перейти к началу предыдущего слова.0(ноль) — в начало строки.$— в конец строки.gg— в самое начало файла.G(Shift+g) — в самый конец файла.:nилиnG— перейти на строку номерn(например,:15или15G)./текст+Enter— поиск вперед.n— следующее совпадение,N— предыдущее.?текст+Enter— поиск назад.
💡 Совет: Практикуйте движения
hjkl5 минут в день. Это основа скорости в Vim.
Шаг 4: Редактирование: удаление, отмена, копирование, вставка
Все действия выполняются в Normal mode.
Удаление:
x— удалить символ под курсором.dd— удалить (вырезать) всю текущую строку.dw— удалить слово, начиная с курсора.d$илиD— удалить от курсора до конца строки.dgg— удалить от текущей строки до начала файла.
Отмена и повтор:
u— отменить последнее изменение (undo).Ctrl + r— повторить отмененное изменение (redo).
Копирование (yank) и вставка (put):
yy— скопировать (yank) текущую строку.yw— скопировать слово.y$— скопировать от курсора до конца строки.p— вставить (put) скопированное после курсора/строки.P(Shift+p) — вставить перед курсором/строкой.
Визуальный режим для выделения:
Нажмите v (визуальный символьный режим) или V (визуальный режим строк). Перемещайтесь курсором (hjkl), чтобы выделить область. Затем:
y— скопировать выделенное.d— удалить (вырезать) выделенное.>— сдвинуть выделенное вправо (отступ).<— сдвинуть влево.
Шаг 5: Сохранение и выход
Все команды сохранения/выхода начинаются с двоеточия : и выполняются в Normal mode.
- Убедитесь, что вы в Normal mode (нажмите
Esc). - Введите:
:w+Enter— сохранить (write) файл.:q+Enter— выйти (quit), если нет несохраненных изменений.:wqили:xилиZZ— сохранить и выйти.:q!— выйти без сохранения изменений (принудительно).:w имя_файла— сохранить текущий буфер под другим именем ("Save As").
Шаг 6: Работа с несколькими файлами и buffers
Vim может работать с несколькими файлами одновременно.
:e имя_файла— открыть (edit) другой файл в текущем окне. Текущий буфер сохранится автоматически, если были изменения? Нет, нужно сохранить явно:wили использовать:enewдля нового файла.:bn— перейти к следующему буферу (buffer next).:bp— перейти к предыдущему буферу.:ls— список всех открытых buffers.:b n— перейти к буферу с номеромn(из списка:ls).
Проверка результата
- Откройте тестовый файл:
vim test.txt. - Перейдите в Insert mode (
i), добавьте новую строку. - Вернитесь в Normal mode (
Esc). - Скопируйте добавленную строку (
yy), переместитесь в конец файла (G), вставьте (p). - Сохраните и выйдите (
:wq). - Просмотрите файл командой
cat test.txt— вы должны увидеть две одинаковые строки.
Возможные проблемы
⚠️ "Заснул" в Vim, ничего не происходит? Вы находитесь в Normal mode. Нажмите
iдля вставки текста илиEsc, затем:q!для выхода.
⚠️ Не могу выйти, пишет "No write since last change (add ! to override)"? У вас есть несохраненные изменения. Используйте
:wq(сохранить и выйти) или:q!(выйти без сохранения).
⚠️ Курсор не двигается клавишами
hjkl? Возможно, вы используете нестандартную раскладку или переопределили клавиши. Проверьте, что вы находитесь в Normal mode (Esc). Также в некоторых эмуляциях терминалов могут быть конфликты. Попробуйте использовать стрелки.
⚠️ Поиск (
/) не находит, хотя текст есть? Убедитесь, что вы ищете точное написание (регистрозависимо по умолчанию). Используйте\cв конце шаблона для игнорирования регистра:/текст\c. Также проверьте, что не осталась старая подсветка поиска — очистите ее:nohlsearch.
⚠️ Случайно нажал
Ctrl + sи терминал "завис"? Это стандартное поведение терминала (XON/XOFF flow control). Разблокируйте: нажмитеCtrl + q. В Vim можно отключить это поведение, добавив в~/.vimrc:set t_ts= t_fs=(но это для продвинутых).