Гид по технологиям

Как сохранить и выйти из Vi

4 min read Linux Обновлено 06 Dec 2025
Как сохранить и выйти из Vi
Как сохранить и выйти из Vi

Скриншот: окно редактора Vi с подсказками по сохранению и выходу

Создание и редактирование текстовых файлов — одна из самых базовых задач в Linux. Редактор Vi даёт быстрые и мощные команды для работы с файлами в терминале. Но часто пользователи не уверены, как правильно сохранить и выйти, особенно когда только начинают.

Быстрая терминология

  • Normal — режим навигации и выполнения команд; по умолчанию при открытии файла. Однострочное определение: режим управления.
  • Insert — режим ввода текста. Однострочное определение: режим редактирования.

Режимы Vi

Vi использует несколько режимов, но для базовой работы достаточно двух:

  • Normal (по умолчанию). Навигация, запуск команд, удаление и замены символов.
  • Insert. Ввод и изменение текста.

Открыв файл в Vi, вы попадёте в Normal режим. Чтобы начать печатать, нажмите I или i (вставка перед курсором). Для возврата в Normal режим нажмите Esc.

Открытие файла в Vi

Обычная команда для создания или открытия файла:

vi <имя_файла>

Пример:

vi textfile.txt

Если файл уже существует, Vi откроет его. Также можно сначала запустить vi, а потом открыть файл командой в Normal режиме:

:e textfile.txt

Как сохранить файл в Vi

Запомните: команды вида “:…” выполняются только из Normal режима. Если вы в Insert, нажмите Esc.

  • Сохранить текущий файл (записать буфер на диск):
:w

Изображение процесса сохранения файла в Vi

  • Сохранить в другой файл (с новым именем):
:w newtextfile.txt

Изображение: сохранение файла под новым именем в Vi

Сохранить и выйти

Команды для одновременного сохранения и выхода:

:wq

или

:x

Разница: :x записывает буфер только если есть несохранённые изменения; :wq всегда выполняет запись и обновляет время модификации файла.

Иллюстрация: сохранение и выход из Vi

Шаги:

  1. Нажмите Esc, чтобы попасть в Normal режим.
  2. Введите :wq или :x.
  3. Нажмите Enter.

Выйти без сохранения

Если нужно закрыть файл и отбросить изменения:

:q!

Иллюстрация: выход без сохранения в Vi

Частые проблемы и способы их решения

Important: многие ошибки при сохранении связаны не с самим Vi, а с правами доступа, с режимом открытия файла или с удалёнными файловыми системами.

  • Нет прав на запись (permission denied). Vi откроет файл, но при попытке :w вы получите ошибку. Решения:
    • Сохранить через sudo, не выходя из Vi:
:w !sudo tee % >/dev/null

Это записывает текущий буфер с повышенными правами через sudo.

  • Или выйти из Vi и перезапустить с sudo:
sudo vi /path/to/file
  • Файл на смонтированном readonly разделе. Проверьте mount и remount с записью.
  • Нестабильная сеть/AFS/NFS: при потере соединения запись может провалиться. Сохраните локально и затем синхронизируйте.

Советы и приёмы

  • Когда сомневаетесь, все изменения сохраняйте в новый файл (:w backup.txt), чтобы не потерять оригинал.
  • Используйте :set number для нумерации строк, :set nonumber чтобы убрать.
  • Для поиска в Normal режиме введите /текст и нажмите Enter.
  • Чтобы отменить последние изменения, используйте u в Normal режиме.

Быстрая шпаргалка команд

i        # войти в Insert режим (вставка)
Esc      # выйти в Normal режим
:w       # сохранить файл
:w имя   # сохранить под другим именем
:wq      # сохранить и выйти
:x       # сохранить только если были изменения, затем выйти
:q!      # выйти без сохранения
:e имя   # открыть/перейти к файлу (в Normal режиме)
:u       # отменить последнее изменение (undo)
/текст   # поиск
:set number    # показать номера строк
:set nonumber  # скрыть номера строк

Когда Vi не подходит: альтернативные подходы

  • Если вам нужен простой редактор для новичка — используйте nano. Он интуитивен и не требует переключения режимов.
  • Для программирования с расширенными возможностями выберите Vim, Neovim или графические IDE (VS Code, JetBrains).
  • Для массовых правок в скриптах удобнее sed/awk или редакторы в режиме пакетной обработки.

Ментальные модели (как думать о Vi)

  • Думайте о Vi как о «режимной» машине: команды и ввод разделены. Это ускоряет работу, когда вы привыкнете.
  • Buffer = рабочая копия файла в памяти. Команды :w и :q действуют на этот буфер и файл на диске.
  • Разрешения ОС управляют возможностью записи; Vi только пытается записать.

Решающее дерево для сохранения и выхода

flowchart TD
  A[Начать: вы в редакторе Vi] --> B{Есть несохранённые изменения?}
  B -- Да --> C{Можно ли записать файл 'права'?}
  B -- Нет --> D[Введите :q чтобы выйти]
  C -- Да --> E[Введите :wq или :x и нажмите Enter]
  C -- Нет --> F{Хотите сохранить под другим именем?}
  F -- Да --> G[Введите :w newname и затем :q]
  F -- Нет --> H{Можно ли использовать sudo?}
  H -- Да --> I[Введите :w !sudo tee % >/dev/null и затем :q]
  H -- Нет --> J[Сохраните локально :w /tmp/file и синхронизируйте позже]

Ролевые чек-листы

Для новичка:

  • Убедитесь, что вы в Normal режиме (Esc).
  • Введите :w для сохранения.
  • Введите :q! если нужно выйти без сохранения.

Для системного администратора:

  • Проверяйте права доступа перед редактированием конфигов.
  • Используйте :w !sudo tee % для правки файлов, требующих root.
  • Делайте резервную копию: :w /root/file.bak

Для разработчика:

  • Используйте :set number для точного указания строк.
  • Комбинируйте поиск (/pattern) и замены (:%s/old/new/g).
  • Настройте автосохранение в редакторе-оболочке если нужно.

Тесты приёмки (кратко)

  • Открыть файл, внести изменение, выполнить :w и убедиться, что файл на диске изменился.
  • Внести изменение, выполнить :q! и убедиться, что файл остался без изменений.
  • Попытаться :w в файл без прав и проверить, что решение через sudo корректно записывает файл.

Заключение

Vi остаётся важным инструментом для работы в терминале. Простые команды сохранения и выхода — :w, :wq, :x, :q! — покрывают большинство случаев. Если столкнулись с проблемами доступа, используйте способ с sudo или сохраните под временным именем и синхронизируйте изменения позже.

Примечание: практика делает работу с Vi быстрой. Начните с основных команд, затем добавляйте сокращения и макросы по мере необходимости.

Ключевые команды повторно в одном месте:

  • :w — сохранить
  • :w имя — сохранить под другим именем
  • :wq — сохранить и выйти
  • :x — сохранить при изменениях и выйти
  • :q! — выйти без сохранения
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как устроить идеальную вечеринку для просмотра ТВ
Развлечения

Как устроить идеальную вечеринку для просмотра ТВ

Как распаковать несколько RAR‑файлов сразу
Инструменты

Как распаковать несколько RAR‑файлов сразу

Приватный просмотр в Linux: как и зачем
Приватность

Приватный просмотр в Linux: как и зачем

Windows 11 не видит iPod — способы исправить
Руководство

Windows 11 не видит iPod — способы исправить

PS5: как настроить игровые пресеты
Консоли

PS5: как настроить игровые пресеты

Как переключить камеру в Omegle на iPhone и Android
Руководство

Как переключить камеру в Omegle на iPhone и Android