Как сохранить изменения и выйти из редактора Vim?

«Как сохранить изменения и выйти из редактора Vim?» — вопрос из категории Linux, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Vim — стандартный редактор во многих серверных окружениях. Вот основные команды для работы с файлами конфигурации в DevOps-практике.

Основные команды (из командного режима):

  1. :w — сохранить (write) изменения в текущий файл.
  2. :wq или ZZ — сохранить и выйти.
  3. :q — выйти (только если нет несохраненных изменений).
  4. :q! — выйти без сохранения, игнорируя изменения.
  5. :w !sudo tee %ключевая команда для DevOps, когда вы редактируете системный файл без прав суперпользователя. Она позволяет сохранить изменения, используя sudo.
    • Наберите :w !sudo tee % и нажмите Enter.
    • Подтвердите пароль для sudo.
    • Нажмите :q! для выхода из Vim.

Практический пример редактирования системного конфига:

# Частая ситуация: редактируем конфиг nginx
sudo vim /etc/nginx/nginx.conf
# ... вносим изменения ...
# Нажимаем Esc для выхода из режима вставки
:wq  # Сохраняем и выходим
# Или, если забыли sudo:
# :w !sudo tee %
# :q!

Советы для работы в серверном окружении:

  • Режимы: Нажмите i для входа в режим вставки (Insert mode). Нажмите Esc для возврата в командный режим (Normal mode).
  • Поиск: В командном режиме наберите /pattern для поиска и n/N для навигации.
  • Отмена: u — отменить последнее изменение.
  • Выход в панике: Нажмите Esc, затем :qa! для выхода из всех файлов без сохранения.

Альтернативы для автоматизации: В скриптах вместо интерактивного Vim используйте sed или ansible lineinfile:

# Заменить строку в файле через sed
sed -i 's/old_value/new_value/g' /etc/config.conf