Home » Как использовать редактор Emacs в Linux
Как использовать редактор Emacs в Linux

Как использовать редактор Emacs в Linux

Каждый уважающий себя сисадмин должен знать хотя бы один текстовый редактор на уровне «закрытыми глазами». И пока новички спорят между vim и nano, опытные разработчики уже давно оценили всю мощь Emacs. Да-да, этот «операционная система, переодетая в текстовый редактор» может стать твоим главным оружием в битве с конфигами, скриптами и всем остальным, что требует редактирования на сервере.

Если ты управляешь серверами, пишешь скрипты автоматизации или просто хочешь повысить свою продуктивность в терминале, Emacs откроет тебе новые горизонты. Эта статья поможет разобраться с основами, настроить редактор под свои задачи и показать несколько фишек, которые сделают твою работу с удалённым сервером намного эффективнее.

Зачем Emacs, если есть vim и nano?

Хороший вопрос! Nano подходит для быстрого редактирования, vim — для профессиональной работы с кодом, но Emacs — это целая экосистема. Он может работать как файловый менеджер, терминал, почтовый клиент, календарь и даже браузер. Да, в нём можно играть в тетрис!

Редактор Кривая обучения Расширяемость Потребление ресурсов Подходит для серверов
nano Очень простая Минимальная Очень низкое Базовое редактирование
vim Сложная Высокая Низкое Отлично
Emacs Умеренная Максимальная Среднее Идеально для комплексных задач

Установка и первый запуск

Начнём с установки. В большинстве дистрибутивов Emacs доступен в стандартных репозиториях:

# Ubuntu/Debian
sudo apt update
sudo apt install emacs

# CentOS/RHEL/Fedora
sudo dnf install emacs
# или для старых версий:
sudo yum install emacs

# Arch Linux
sudo pacman -S emacs

После установки запускаем:

# Графический режим (если есть X11)
emacs

# Текстовый режим (для серверов)
emacs -nw

# Открыть конкретный файл
emacs -nw /etc/nginx/nginx.conf

При первом запуске ты увидишь welcome screen с туториалом. Рекомендую его пройти, но если времени нет — жми Ctrl+x Ctrl+f для открытия файла.

Основные комбинации клавиш для выживания

В Emacs используется специальная нотация: C- означает Ctrl, M- означает Alt (Meta). Вот минимальный набор для начала работы:

# Файловые операции
C-x C-f     # Открыть файл
C-x C-s     # Сохранить файл
C-x C-w     # Сохранить как
C-x C-c     # Выйти из Emacs

# Навигация
C-f         # Символ вперёд
C-b         # Символ назад
C-n         # Строка вниз
C-p         # Строка вверх
C-a         # Начало строки
C-e         # Конец строки
M-<         # Начало файла
M->         # Конец файла

# Редактирование
C-d         # Удалить символ
C-k         # Удалить до конца строки
C-y         # Вставить (yank)
C-w         # Вырезать выделенное
M-w         # Копировать выделенное
C-/         # Отменить (undo)

# Поиск и замена
C-s         # Поиск вперёд
C-r         # Поиск назад
M-%         # Поиск и замена

Настройка под серверные задачи

Emacs настраивается через файл ~/.emacs или ~/.emacs.d/init.el. Вот базовая конфигурация для работы с серверами:

;; Отключаем графические элементы для работы в терминале
(menu-bar-mode -1)
(tool-bar-mode -1)
(scroll-bar-mode -1)

;; Показываем номера строк
(global-linum-mode 1)

;; Подсвечиваем синтаксис
(global-font-lock-mode 1)

;; Автоматическое закрытие скобок
(electric-pair-mode 1)

;; Показываем парные скобки
(show-paren-mode 1)

;; Автоматическое создание backup-файлов в отдельную папку
(setq backup-directory-alist '(("." . "~/.emacs.d/backups")))

;; Подсветка текущей строки
(global-hl-line-mode 1)

;; Настройка для работы с конфигами
(add-to-list 'auto-mode-alist '("\\.conf\\'" . conf-mode))
(add-to-list 'auto-mode-alist '("\\.cfg\\'" . conf-mode))
(add-to-list 'auto-mode-alist '("\\nginx.*" . conf-mode))
(add-to-list 'auto-mode-alist '("\\apache.*" . conf-mode))

Полезные режимы для сисадминов

Работа с логами

Emacs отлично подходит для анализа логов. Режим auto-revert-tail-mode позволяет следить за изменениями в файле в реальном времени:

# Открываем лог-файл
emacs -nw /var/log/nginx/error.log

# Внутри Emacs включаем режим слежения
M-x auto-revert-tail-mode

Dired — файловый менеджер

Встроенный файловый менеджер запускается командой C-x d. Основные команды:

C-x d       # Открыть Dired
Enter       # Открыть файл/папку
d           # Пометить для удаления
u           # Снять пометку
x           # Выполнить помеченные операции
C           # Копировать
R           # Переименовать/переместить
+           # Создать папку
g           # Обновить список

Tramp — удалённое редактирование

Одна из самых крутых фишек Emacs — возможность редактировать файлы на удалённых серверах через SSH:

# Открываем удалённый файл
C-x C-f /ssh:user@server.com:/etc/nginx/nginx.conf

# Или с sudo на удалённом сервере
C-x C-f /ssh:user@server.com|sudo:root@server.com:/etc/nginx/nginx.conf

Практические сценарии использования

Массовая замена в конфигах

Допустим, нужно заменить старый IP-адрес на новый во всех конфигах Nginx:

# Открываем Dired в папке с конфигами
C-x d /etc/nginx/sites-enabled/

# Помечаем все файлы: t (toggle all)
# Запускаем поиск и замену по всем файлам
Q

# Вводим старый IP
192.168.1.100

# Вводим новый IP
192.168.1.200

# Подтверждаем каждую замену или жмём ! для замены всех

Работа с несколькими файлами

Emacs может работать с несколькими буферами (файлами) одновременно:

C-x b       # Переключиться между буферами
C-x C-b     # Показать список всех буферов
C-x k       # Закрыть текущий буфер
C-x 2       # Разделить окно горизонтально
C-x 3       # Разделить окно вертикально
C-x 1       # Оставить только одно окно
C-x o       # Переключиться в другое окно

Работа с терминалом

Внутри Emacs можно запустить полноценный терминал:

M-x term         # Запустить терминал
M-x shell        # Запустить shell
M-x eshell       # Запустить встроенный shell Emacs

Продвинутые возможности

Макросы для автоматизации

Emacs позволяет записывать макросы для автоматизации повторяющихся действий:

C-x (       # Начать запись макроса
# Выполняем нужные действия
C-x )       # Закончить запись

C-x e       # Выполнить макрос
C-u 10 C-x e    # Выполнить макрос 10 раз

Работа с Git

Встроенный VC (Version Control) режим позволяет работать с Git:

C-x v v     # Коммит изменений
C-x v =     # Показать diff
C-x v l     # Показать лог
C-x v u     # Отменить изменения

Org-mode для документации

Org-mode отлично подходит для ведения документации по серверам:

# Создаём файл server-docs.org
* Сервер web-01
** Характеристики
- IP: 192.168.1.100
- RAM: 16GB
- CPU: 8 cores
** Установленные сервисы
- Nginx
- PHP-FPM
- MySQL
** TODO Обновить PHP до версии 8.1
** DONE Настроить SSL-сертификаты

Интеграция с другими инструментами

Работа с Docker

Можно настроить Emacs для работы с Docker-контейнерами:

# Редактирование файлов внутри контейнера
C-x C-f /docker:container_name:/path/to/file

# Или через Tramp
C-x C-f /ssh:user@host|docker:container:/path/to/file

Интеграция с Ansible

Для работы с Ansible-плейбуками можно добавить в конфиг:

(add-to-list 'auto-mode-alist '("\\.yml\\'" . yaml-mode))
(add-to-list 'auto-mode-alist '("\\.yaml\\'" . yaml-mode))

Производительность и оптимизация

Для работы на серверах стоит оптимизировать конфиг:

;; Отключаем автосохранение для экономии ресурсов
(setq auto-save-default nil)

;; Увеличиваем порог сборки мусора
(setq gc-cons-threshold 20000000)

;; Отключаем звуки
(setq ring-bell-function 'ignore)

;; Быстрее работа с большими файлами
(setq large-file-warning-threshold 100000000)

Альтернативы и сравнения

Если Emacs кажется слишком сложным, стоит рассмотреть альтернативы:

  • micro — современный терминальный редактор с интуитивным интерфейсом
  • joe — простой, но мощный редактор
  • mcedit — редактор из Midnight Commander
  • mg — минималистичный клон Emacs

Однако по гибкости и возможностям настройки Emacs остаётся непревзойдённым.

Интересные факты и нестандартное использование

  • Emacs может работать как веб-сервер (пакет elnode)
  • В нём можно читать RSS-ленты (режим Gnus)
  • Есть полноценный календарь с поддержкой праздников
  • Можно играть в игры: тетрис, змейка, сапёр
  • Режим doctor — психотерапевт внутри редактора
  • Можно использовать как калькулятор (M-x calc)

Автоматизация и скрипты

Emacs можно использовать для автоматизации задач через Emacs Lisp:

;; Скрипт для автоматической очистки логов
(defun clean-logs ()
  "Очищает старые логи"
  (interactive)
  (shell-command "find /var/log -name '*.log' -mtime +7 -delete")
  (message "Старые логи очищены"))

;; Привязываем к горячей клавише
(global-set-key (kbd "C-c l") 'clean-logs)

Также можно создавать скрипты для массовых операций с конфигами, мониторинга серверов и автоматического развёртывания.

Полезные ссылки

Заключение и рекомендации

Emacs — это не просто редактор, это целая философия работы с текстом и автоматизации. Для сисадминов он особенно ценен возможностью работы с удалёнными файлами, мощными инструментами поиска и замены, интеграцией с системными утилитами.

Рекомендую начать с базовых команд, постепенно изучая дополнительные возможности. Не пытайся освоить всё сразу — лучше хорошо знать основы, чем поверхностно разбираться во всех функциях.

Для серверных задач Emacs идеально подходит в следующих случаях:

  • Работа с большими конфигурационными файлами
  • Анализ логов и мониторинг
  • Массовые операции с файлами
  • Удалённое администрирование через SSH
  • Ведение документации по серверам

Если ты управляешь множеством серверов, стоит рассмотреть аренду VPS или выделенного сервера для централизованного управления инфраструктурой, где Emacs покажет всю свою мощь.

Помни: инвестиции во время изучения Emacs окупятся многократно повышенной продуктивностью и автоматизацией рутинных задач. Удачи в освоении этого мощного инструмента!


В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.

Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.

Leave a reply

Your email address will not be published. Required fields are marked