- Home »

Как использовать редактор 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 окупятся многократно повышенной продуктивностью и автоматизацией рутинных задач. Удачи в освоении этого мощного инструмента!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.