Skip to content

Latest commit

 

History

History
592 lines (435 loc) · 45 KB

emacs-editor.md

File metadata and controls

592 lines (435 loc) · 45 KB

Работа с редактором Emacs

В инструкции приведены основы работы с редактором Emacs в Git.

  • Для запуска GNU Emacs 27 просто наберите имя программы: emacs.
  • Приостановить работу Emacs или свернуть иконку при работе в X — C-z.
  • Выйти из Emacs — C-x C-c.

Файлы

Команда Действие
C-x C-f Открыть файл в Emacs
C-x C-s Сохранить файл обратно на диск
C-x s Сохранить все файлы
C-x i Вставить содержимое другого файла в текущий буфер
C-x C-v Открыть нужный вам файл вместо текущего
C-x C-w Сохранить буфер в указанном файле
C-x C-q Переключить состояние буфера в режим «Только для чтения»

Получение помощи

Нажмите C-h или F1 и следуйте инструкциям. Если вы в первый раз работаете
с Emacs, то наберите C-u C-h t Russian RET для вызова учебника.

Команда Действие
C-x 1 Скрыть окно справки
C-M-v Прокрутить окно справки
C-h a Apropos: показать команды, соответствующие строке
C-h k Показать имя функции, которая запускается клавишей
C-h f Получить информацию о функции
C-h m Получить информацию о режиме

Исправление ошибок

Команда Действие
C-g Прервать частично набранную или исполняемую команду
M-x Восстановить файл, потерянный при крахе системы
C-x u, C-_ или C-/ Отменить нежелательные изменения
M-x revert-buffer Восстановить буфер в первоначальное состояние
C-1 Перерисовать заполненный мусором экран

Наращиваемый поиск

Команда Действие
C-s Поиск вперёд
C-r Поиск назад
C-M-s Поиск по регулярному выражению вперёд
C-M-r Поиск по регулярному выражению назад
M-p Выбрать предыдущую строку поиска
M-n Выбрать следующую строку поиска
RET Прекратить наращиваемый поиск
DEL Отменить эффект ввода последнего символа
C-g Прервать текущий поиск
C-s или C-r,если поиск ещё идёт — C-g: отменит только невыполненную часть Повтор поиска в любом направлении

Замена с запросом

Команда Действие
M-% Интерактивная замена текстовой строки
M-x query-replace-regexp Использование повторяющихся выражений
SPC В режиме интерактивной замены:заменить соответствие, перейти к следующему
, Заменить соответствие без замены
DEL Пропустить соответствие без замены
! Заменить все оставшиеся соответствия
RET Выйти из режима «Замена с запросом»
C-r Войти в режим рекурсивного редактирования. Для выхода используется C-M-c

Форматирование

Команда Действие
TAB Сделать отступ для текущей строки (в зависимости от режима)
C-M-\ Сделать отступ для области (в зависимости от режима)
C-M-q Сделать отступ для выражения (в зависимости от режима)
C-x TAB Сделать отступ к заданной arg колонке
C-o Вставить новую строку после курсора
C-M-o Сдвинуть остаток строки вертикально вниз
C-x C-o Удалить пустые строки вокруг курсора
M-\ Удалить пустое пространство вокруг курсора
M-SPC Поместить только один пробел в позиции курсора
M-q Отформатировать текущий параграф
C-x f Установить столбец заполнения
C-x / Установить префикс заполнения каждой строки
M-g Установить начертание (face)

Перестановка данных

Команда Действие
C-t Поменять местами символы
M-t Поменять местами слова
C-x C-t Поменять местами строки
C-M-t Поменять местами выражения

Проверка правописания

Команда Действие
M-$ Проверить текущее слово
M-x ispell-region Проверить все слова в области
M-x ispell-buffer Проверить весь буфер

Теги

Команда Действие
M-. Найти определение тега
C-u M-. Найти следующее вхождение тега
M-x visit-tags-table Использовать новый файл с тегами
M-x tags-search Найти по шаблону по всей таблице тегов
M-x tags-query-replace Выполнить query-replace над всеми файлами
M-, Продолжить поиск или поиск-замену тега

Командные процессоры

Команда Действие
M-! Выполнить команду командного процессора
M-| Выполнить команду командного процессора над областью
C-u M-| Пропустить содержимое области через команду командного процессора
M-x shell Запустить командный процессор в окне *shell*

Прямоугольные области

Команда Действие
C-x r r Скопировать прямоугольную области в регистр
C-x r k Удалить прямоугольную область
C-x r y Вставить последнюю уничтожённую прямоугольную область
C-x r o Открыть прямоугольную область, сдвигая текст вправо
C-x r c Очистить прямоугольную область
C-x r t Предварить каждую строку строкой текста

Сокращения

Команда Действие
C-x a g Добавить глобальное сокращение
C-x a l Добавить локально для режима сокращение
C-x a i g Добавить глобальное значение для этого сокращения
C-x a i l Добавить специфическое значение для режима значения этого сокращения
C-x a e Явно вставить значение для сокращения
M-/ Динамически дополнить предыдущее слово

Регулярные выражения

Выражение Действие
. (dot) Любой одиночный символ за исключением символа новой строки
* Ноль или более повторений
+ Одно или более повторений
? Ноль или одно повторение
\c Экранировать специальный символ c
\| Выбор между альтернативами («или»)
\( … \) Группировка
\n Текст в n-й группе
\b Граница слова
\B Не граница слова
$ Строка
\< \> Слово
\' \' Буфер
[ … ] Явный набор
\w \W Символ-буква
\sc \Sc Символ с синтаксисом c

Международные наборы символов

Команда Действие
C-x RET l Выбрать язык
M-x list-input-methods Показать все возможные методы ввода
C-\ Разрешить или запретить метод ввода
C-x RET c Установить систему кодирования для следующей команды
M-x list-coding-systems Показать список всех систем кодирования
M-x prefer-coding-system Выбрать предпочтительную систему кодирования

Регистры

Команда Действие
C-x r s Сохранить область в регистре
C-x r i Вставить содержимое регистра в буфер
C-x r SPC Сохранить положение курсора в регистре
C-x r j Перейти к положению курсора, сохранённому в регистре

Клавиатурные макросы

Макрос Действие
C-x ( Начать определение клавиатурного макроса
C-x ) Закончить определение клавиатурного макроса
C-x e Выполнить последний определённый макрос
C-u C-x ( Дополнить последний определённый макрос
M-x name-last-kbd-macro Задать имя для последнего определённого макроса
M-x insert-kbd-macro Вставить в буфер определение макроса на языке Lisp

Команды, связанные с Emacs Lisp

Команда Действие
C-x C-e Вычислить выражение перед курсором
C-M-x Вычислить текущую функцию defun
M-x eval-region Вычислить область как выражение
M-: Считать и вычислить выражение из минибуфера
M-x customize Загрузить из стандартного системного каталога

Простая настройка

M-x customize — настроить переменные и оформление (faces).

Создание глобальных привязок клавиш (ключей) на Emacs Lisp (примеры):

(global-set-key "\C-cg 'goto-line)(global-set-key "\M-# 'querty-replace-regexp)

Написание команд

(defun <command-name> (<args>)"<documentation> (interactive "<>template")<body>)

Основы работы с клавиатурой

Сочетание клавиш Команда Действие
C-p previous-line Вверх на одну строку
C-n next-line Вниз на одну строку
C-f forward-char Вперёд на один символ
C-b backward-char Назад на один символ
C-a beggining-of-line Начало строки
C-e end-of-line Конец строки
C-v scroll-up Вниз на одну страницу
M-v previous-page Вверх на одну страницу
M-f next-word Вперёд на одно слово
M-b previous-word Назад на одно слово
M-< beginning-of-buffer В начало буфера
M-> end-of-buffer В конец буфера
C-g keyboard-quit Закончить (прервать) текущую операцию
goto-line Переход на заданную строку

Команды работы с текстом

Сочетание клавиш Команда Действие
C-d delete-char Удалить символ перед точкой
M-d kill-word Удалить следующее слово
C-k kill-line Удалить текст до конца строки
M-k kill-sentence Удалить текст до конца предложения
M-\ delete-horizontal-space Удалить все пробелы и знаки табуляции вокруг точки
C-q quoted-insert Вставить символ, соответствующий нажатой клавише или сочетанию, даже если это управляющая последовательность
M-q fill-paragraph Выровнять текст в текущем параграфе

Команды работы с пометками и регионами

Сочетание клавиш Команда Действие
C-space set-mark-command Установить пометку в точке
C-x C-x exchange-point-and-mark Поменять местами точку и начало пометки
mark-whole-buffer Пометить весь буфер
C-w kill-region Удалить выделенную область в список удалений
M-w kill-ring-save Копировать выделенную область в список удалений
C-y yank Вставить текст из списка удалений в текущую позицию
M-y yank-pop Последовательно вставить текст из списка удалений
C-x x N copy-to-register Копировать отмеченный текст в регистр. N может быть буквой или цифрой, позволяя использовать множество регистров
C-x g N insert-register Вставить в точку содержимое регистра N
M-\ indent-region Выровнять строки выделенного фрагмента

Команды поиска и замены

Сочетание клавиш Команда Действие
C-s isearch-forward Поиск строки вперёд
C-r isearch-backward Поиск строки в обратном направлении
replace-string Поиск и замена строки
replace-regexp Поиск и замена с использованием регулярного выражения
M-% query-replace Поиск и замена с запросом

Команды работы с файлами буферами и окнами

Сочетание клавиш Команда Действие
C-x C-f find-file Открыть файл на диске
C-x C-s save-buffer Сохранить буфер на диске
C-x C-w write-file Сохранить буфер в файле с новым именем
C-x C-b list-buffers Отобразить список открытых буферов в новом окне
C-x b switch-to-buffer Переключиться в другой буфер в текущем окне
C-x C-c save-buffers-kill-emacs Перед выходом из редактора запросить о необходимости сохранения изменённых файлов
C-x i insert-file Вставить содержимое файла в буфер в текущую позицию
C-x 0 delete-window Закрыть текущее окно, при этом буфер не удаляется
C-x 1 delete-other-windows Закрыть все окна кроме текущего
C-x 2 split-window-vertically Разделить окно по горизонтали
C-x o other-window Перейти в другое окно
C-M-v Выполнить прокрутку в другом окне
C-x 4 bC-x 5 b Выбрать буфер в другом окне
C-x 4 C-oC-x 4 C-o Показать буфер в другом окне
C-x 4 fC-x 5 f Загрузить файл в другое окно
C-x 4 rC-x 5 r Открыть файл в режиме чтения в другом окне
C-x 4 dC-x 5 d Запустить Dired в другом окне
C-x 4 .C-x 5 . Найти тег в другом окне
C-x { Сузить текущее окно
C-x } Расширить текущее окно

Команды работы со справочной системой

Сочетание клавиш Команда Действие
C-h ? help-for-help Информация об использовании справочной системы
C-h t help-with-tutorial Использовать интерактивный учебник
C-h f describe-function Показать справку по функции
C-h v describe-variable Показать справку по переменной
C-h k describe-key Показать данные о том, что делает последовательность клавиш
C-h a apropos Поиск в справке по строке, регулярному выражению
C-h F view-emacs-FAQ Показать Emacs FAQ
C-h i info Показать документацию по Emacs (Info)

Прочие основные команды Emacs

Сочетание клавиш Команда Действие
M-x command Выполнить команду Emacs с именем command
C-x u undo Отменить последнюю операцию
C-x r m bookmark-set Установить закладку. Полезно при поиске
C-x r b bookmark-jump Перейти к закладке

Настройка русского языка в GNU Emacs

Чтобы настроить GNU Emacs для работы с русским языком (предполагается использование кодировки koi8-r), надо поместить в ваш файл настройки (~/.emacs) следующие строки:

(set-language-environment 'Cyrillic-KOI8)(set-terminal-coding-system 'koi8-r)(set-keyboard-coding-system 'koi8-r)(setq default-buffer-file-coding-system 'koi8-r)(prefer-coding-system 'koi8-r)(define-coding-system-alias 'koi8-u 'koi8-r)(put-charset-property 'cyrillic-iso8859-5 'preferred-coding-system 'koi8-r)(codepage-setup 1251)(define-coding-system-alias 'windows-1251 'cp1251)(set-input-mode nil nil 'We-will-use-eighth-bit-of-input-byte)(setq-default coding-system-for-read 'koi8-r)(set-selection-coding-system 'koi8-r)

Настройка вида Emacs

(require 'color-theme)(color-theme-gnome2)Вместо (color-theme-gnome2) необходимо вписать название понравившейся вам цветовой схемы.

Дополнительные команды

Команда Действие
^H k <ключ> Краткое, полное описание ключа
^H f <функция> Описание функции
^H a <текст> Все функции с этим текстом
^H w <функция> На какой клавише висит функция

Хождение по файлам

Команда Действие
^X ^F Войти в файл по запросу
^X ^V Войти в файл по запросу в том же окне
^X 4 ^F Войти в файл по запросу в другом окне
^X ^S / S Сохранить файл, все файлы
^X ^C Выйти из всех файлов с сохранением
^X ^C Забыть, что файл был изменен
^X ^W Записать файл под другим именем — write-file
M-x<имя файла> Поменять имя файла после записи
^X ^D<каталог> Список файлов в каталоге
^X d Dired-режим
^U ^X ^D<каталог> Список файлов в каталоге
M-x view-file Просмотреть файл
M-x insert-file Вставить файл
^X ^S / S Сохранить файл(ы)

Окна, буферы

Команда Действие
^X 0 Уничтожить окно
^X 1 Первое окно на весь экран (ZOOM)
^X o В другое окно
M-^V Листать другое окно
^X ^B Список буферов
^X k Удалить буфер

Информация

Команда Действие
M-x what-page Какая страница
M-x what-line Какая линия
M-= / ^= Размер файла, позиция курсора
^X l О странице

Откатка

^X u / ^? / ^_ Откатка — undo advertised-undo
^G Прервать команду

Большие/маленькие. Русские/латинские

Команда Действие
M-- M-l Сделать предыдущее слово маленьким
M-- M-u Сделать предыдущее слово большим
M-- M-c Сделать предыдущее слово маленьким с заглавной
C-x C-u Сделать буквы области заглавными
C-x C-l Сделать буквы области строчным

Перемещение по тексту

Команда Действие
^b/^f Сдвинуться на шаг
^p/^n Следующая строка, предыдущая строка
M- f/b n/p На слово или предложение
^X r В середину окна
^V / M-V На страницу вниз, вверх — scroll-up/scroll-down
^A / ^E В начало или в конец строки
M-a / M-e В начало или в конец предложения
M-< / > Встать в начало, конец файла — beginning-of-buffer/ end-of-buffer
^@ / ^SPC Запомнить позицию в тексте
^X ^X Встать в запомненную позицию, запомнив текущую
^U ^@ Встать на предыдущую помеченную позицию

Установка окна в удобное положение

Команда Действие
^L Перерисовать экран — redraw-display
M-x goto-line Выставить строку No в середину экрана

Вставка, удаление, редактирование строки

Команда Действие
^D Удалить символ
Del Удаление
M-Del Удалить предыдущее слово
M-x overwrite-mode Режим замены
^K Удалить конец строки, удалить начало строки
M-d Удалить слово и пробелы за ним
M-^ Склеить строки delete-indentation

Запоминание/вспоминание

Команда Действие
^Y Вспомнить символы
M-y Вспомнить предыдущие символы
^@ Запомнить угол региона — set-mark-command
^W Удалить с запоминанием
^X x Запомнить в регистре
M-d Удалить слово с запоминанием — kill-word
M-w Запомнить регион
^X x R Запомнить регион в регистре —copy-to-register
^X g R Вспомнить в регистре — insert-register

Макрокоманды и т. п.

Команда Действие
^u <команда> Выполнить команду n раз (n — число)
M-x <функция> Выполнить функцию по имени
M-x set-variable Установить значение переменной
M-x global-set-key <функция> Повесить на клавишу функцию
^X ( клавиши ^X ) Задать макрокоманду
X e^ Выполнить макрокоманду
name-last-kbd-makro Присвоить ей имя
insert-last-kbd-makro Воспроизвести клавиши Lisp-кода
insert-kbd-makro Вставить Lisp-код по функции
M-x disassemble Дизассемблировать функцию

Команды минибуфера

Команда Действие
^X ESC Повторить последнюю команду `repeat-complex-command')
M-p/M-n Листать команды минибуфера вверх/вниз
M-x list-command-history История
Tab/space/? Дополнить

Поиск и замена

Команда Действие
^S/^R Мягкий поиск вперёд/назад
DEL Вернуться
^G Прервать поиск
^S Повторить поиск
M-% Поиск и замена query-display " " — выполнять замену, DEL — прерваться

Форматирование

Команда Действие
M-q Отформатировать абзац
M-x auto-fill-mode Установить или отменить режим автоформатирования
M-x set-variable indent-tabs-mode nil Выровнять с помощью пробелов
M-x tabify Свернуть все пробелы в табуляторы
M-x untabify Развернуть все табуляторы в пробелы

Прочее

Команда Действие
[^X] ^Z Выйти в ОС — suspend-emacs
ESC ! Выполнить команду shell по запросу — shell-command
M-x shell Открыть окно с shell

Фильтры

Команда Действие
M-x outline-mode to turn on Outline mode in the current buffer.set-var outline-regexp по умолчанию ^[*][*]* Задаёт фильтр
M-x hide-body Спрятать всё, кроме заголовков
M-x show-all Включить все строки

Установка параметров

Команда Действие
^X ^N Поставить стоп на next, previous-line
^U ^X ^N Снять
truncate-lines=no Не сворачивать строки
scroll-... Мягкий скролл, без прыжков
1. ctl-arrow nil Представлять CTRL-символы ^? или \xxx

Lisp-функции

Команда Действие
M-x load-file / library Загрузить файл с Lisp .elc, .el
M-x byte-compile-file Откомпилировать файл
M-x byte-recompile-directory Перекомпилировать файлы в директории
M-x disassemble Декомпиляция Lisp-функции
M-x insert-kbd-makro Вставить описание функции