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

Как сохранить и выйти из 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
Автор
Редакция

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро