% Copyright (C) 1997, 2002--2021 Free Software Foundation, Inc. % Author: Stephen Gildea % Russian translation: Alex Ott % This document is free software: you can redistribute it and/or modify % it under the terms of the GNU General Public License as published by % the Free Software Foundation, either version 3 of the License, or % (at your option) any later version. % As a special additional permission, you may distribute reference cards % printed, or formatted for printing, with the notice "Released under % the terms of the GNU General Public License version 3 or later" % instead of the usual distributed-under-the-GNU-GPL notice, and without % a copy of the GPL itself. % This document is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the % GNU General Public License for more details. % You should have received a copy of the GNU General Public License % along with GNU Emacs. If not, see . \documentclass[10pt]{article} \usepackage{multicol,tabularx} \usepackage[a4paper,hmargin={2cm,2cm},vmargin={2cm,2cm},nohead,twoside]{geometry} \usepackage[T2A]{fontenc} \usepackage[utf8]{inputenc} \usepackage[english,russian]{babel} \usepackage{verbatim} %\usepackage{enumerate,calc} %\usepackage{indentfirst,amsmath,graphicx,citehack,floatflt} % %\usepackage{pscyr} %\renewcommand{\rmdefault}{fha} \newlength{\ColWidth} \setlength{\ColWidth}{120mm} \newlength{\ColThreeWidth} \setlength{\ColThreeWidth}{25mm} \newcommand{\versionemacs}[0]{28} % version of Emacs this is for \newcommand{\cyear}[0]{2021} % copyright year \newcommand\shortcopyrightnotice[0]{\vskip 1ex plus 2 fill \centerline{\footnotesize \copyright\ \cyear\ Free Software Foundation, Inc. Permissions on back.}} \newcommand\copyrightnotice[0]{ \vskip 1ex plus 2 fill\begingroup\footnotesize \centerline{Copyright \copyright\ \cyear\ Free Software Foundation, Inc.} \centerline{For GNU Emacs version \versionemacs} \centerline{Designed by Stephen Gildea} \centerline{Перевод Alex Ott } \centerline{Released under the terms of the GNU General Public License version 3 or later.} \centerline{For more Emacs documentation, and the \TeX{} source for this card,} \centerline{see the Emacs distribution, or {\tt https://www.gnu.org/software/emacs}} \endgroup} \hyphenation{mini-buf-fer} \parindent 0pt %\parskip 0.5ex plus .2ex minus .2ex \newcommand{\kbd}[1]{\texttt{#1}} \begin{document} %\begin{multicols}{3} \centerline{Справочник команд GNU Emacs} \centerline{(для версии \versionemacs)} \section{Запуск Emacs} Для запуска GNU Emacs \versionemacs, просто наберите имя программы: \kbd{emacs} \section{Выход из Emacs} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} Приостановить работу Emacs (или свернуть в иконку при работе в X) & \kbd{C-z} \\ Выйти из Emacs & \kbd{C-x C-c} \\ \end{tabular} \section{Файлы} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf открыть} файл в Emacs & \kbd{C-x C-f} \\ {\bf сохранить} файл обратно на диск & \kbd{C-x C-s} \\ сохранить {\bf все} файлы & \kbd{C-x s} \\ {\bf вставить} содержимое другого файла в текущий буфер & \kbd{C-x i} \\ открыть нужный вам файл вместо текущего & \kbd{C-x C-v} \\ сохранить буфер в указанном файле & \kbd{C-x C-w} \\ Переключить состояние буфера ``только для чтения'' & \kbd{C-x C-q} \\ \end{tabular} \section{Получение помощи} Справочная система достаточно проста. Hажмите \kbd{C-h} (или \kbd{F1}) и следуйте инструкциям. Если вы в первый раз работаете с Emacs, то наберите \kbd{C-u C-h t Russian RET} для вызова {\bf учебника}. \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} Скрыть окно справки & \kbd{C-x 1} \\ Прокрутить окно справки & \kbd{C-M-v} \\ apropos: показать команды, соответствующие строке & \kbd{C-h a} \\ показать имя функции, которая запускается клавишей & \kbd{C-h k} \\ получить информацию о функции & \kbd{C-h f} \\ получить информацию о режиме & \kbd{C-h m} \\ \end{tabular} \section{Исправление ошибок} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf прервать} частично набранную или исполняемую команду & \kbd{C-g} \\ {\bf восстановить} файл, потерянный при крахе системы & \kbd{M-x recover-file} \\ {\bf отменить} нежелательные изменения & \kbd{C-x u, C-\_ {\rm или} C-/} \\ восстановить буфер в первоначальное состояние & \kbd{M-x revert-buffer} \\ перерисовать заполненный мусором экран & \kbd{C-l} \\ \end{tabular} \section{Hаращиваемый поиск} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} поиск вперед & \kbd{C-s} \\ поиск назад & \kbd{C-r} \\ поиск по регулярному выражению вперед & \kbd{C-M-s} \\ поиск по регулярному выражению назад & \kbd{C-M-r} \\ выбрать предыдущую строку поиска & \kbd{M-p} \\ выбрать следующую строку поиска & \kbd{M-n} \\ прекратить наращиваемый поиск & \kbd{RET} \\ отменить эффект ввода последнего символа & \kbd{DEL} \\ прервать текущий поиск & \kbd{C-g} \\ \end{tabular} Для повтора поиска в любом направлении используйте клавиши \kbd{C-s} или \kbd{C-r}. Если Emacs все еще производит поиск, \kbd{C-g} отменит только не выполненную часть. \section{Перемещение} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf единицы перемещения} & {\bf назад} & {\bf вперед} \\ символ & \kbd{C-b} & \kbd{C-f} \\ слово & \kbd{M-b} & \kbd{M-f} \\ строка & \kbd{C-p} & \kbd{C-n} \\ начало (или конец) строки & \kbd{C-a} & \kbd{C-e} \\ предложение & \kbd{M-a} & \kbd{M-e} \\ абзац & \kbd{M-\{} & \kbd{M-\}} \\ страница & \kbd{C-x [} & \kbd{C-x ]} \\ выражение (sexp) & \kbd{C-M-b} & \kbd{C-M-f} \\ функция & \kbd{C-M-a} & \kbd{C-M-e} \\ переход в начало (или конец) буфера & \kbd{M-<} & \kbd{M->} \\ \end{tabular} \begin{tabular}{p{\ColWidth}l} прокрутка экрана вниз & \kbd{C-v} \\ прокрутка экрана вверх & \kbd{M-v} \\ прокрутка влево & \kbd{C-x <} \\ прокрутка вправо & \kbd{C-x >} \\ установка текущей строки в центр экрана & \kbd{C-u C-l} \\ \end{tabular} \section{Уничтожение и удаление} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf уничтожаемый объект} & {\bf назад} & {\bf вперед} \\ символ (удаление, а не уничтожение) & \kbd{DEL} & \kbd{C-d} \\ слово & \kbd{M-DEL} & \kbd{M-d} \\ строка (до конца строки) & \kbd{M-0 C-k} & \kbd{C-k} \\ предложение & \kbd{C-x DEL} & \kbd{M-k} \\ выражение & \kbd{M-- C-M-k} & \kbd{C-M-k} \\ \end{tabular} \begin{tabular}{p{\ColWidth}l} уничтожить {\bf область} & \kbd{C-w} \\ скопировать область в список уничтожений & \kbd{M-w} \\ уничтожить до следующего вхождения символа {\it char} & \kbd{M-z {\it char}} \\ вставить последний уничтоженный объект & \kbd{C-y} \\ заменить только что восстановленный текст предшествующим уничтоженным текстом & M-y \\ \end{tabular} \section{Пометка} \begin{tabular}{p{\ColWidth}l} установить пометки & \kbd{C-@ {\rm или} C-SPC} \\ поменять местами курсор и пометку & \kbd{C-x C-x} \\ пометить {\it arg\/} {\bf слов} & \kbd{M-@} \\ пометить {\bf параграф} & \kbd{M-h} \\ пометить {\bf страницу} & \kbd{C-x C-p} \\ пометить {\bf выражение} & \kbd{C-M-@} \\ пометить {\bf функцию} & \kbd{C-M-h} \\ пометить весь {\bf буфер} & \kbd{C-x h} \\ \end{tabular} \section{Замена с запросом} \begin{tabular}{p{\ColWidth}l} интерактивная замена текстовой строки & \kbd{M-\%} \\ с использованием регулярных выражений & \kbd{M-x query-replace-regexp} \\ \end{tabular} В режиме интерактивной замены пользователю доступны следующие команды: \begin{tabular}{p{\ColWidth}l} {\bf заменить} данное соответствие, перейти к следующему & \kbd{SPC} \\ заменить это соответствие, не перемещаться & \kbd{,} \\ {\bf пропустить} соответствие без замены & \kbd{DEL} \\ заменить все оставшиеся соответствия & \kbd{!} \\ {\bf вернуться} к предыдущему соответствию & \kbd{\^} \\ {\bf выйти} из режима ``замена с запросом'' & \kbd{RET} \\ войти в режим рекурсивного редактирования (для выхода используется \kbd{C-M-c}) & \kbd{C-r} \\ \end{tabular} \section{Использование нескольких окон} Команды, приведенные во втором столбце, применяются к другому фрэйму (окну используемой оконной системы). \begin{tabular}{p{\ColWidth}l} удалить все остальные окна & \kbd{C-x 1} \\ \end{tabular} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} разбить окно по горизонтали & \kbd{C-x 2\ \ \ \ } & \kbd{C-x 5 2} \\ удалить данное окно & \kbd{C-x 0\ \ \ \ } & \kbd{C-x 5 0} \\ разбить окно по вертикали & \kbd{C-x 3} \\ выполнить прокрутку в другом окне & \kbd{C-M-v} \\ \end{tabular} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} переместить курсор в другое окно & \kbd{C-x o} & \kbd{C-x 5 o} \\ выбрать буфер в другом окне & \kbd{C-x 4 b} & \kbd{C-x 5 b} \\ показать буфер в другом окне & \kbd{C-x 4 C-o} & \kbd{C-x 5 C-o} \\ загрузить файл в другое окно & \kbd{C-x 4 f} & \kbd{C-x 5 f} \\ открыть файл в режиме чтения в другом окне & \kbd{C-x 4 r} & \kbd{C-x 5 r} \\ запустить Dired в другом окне & \kbd{C-x 4 d} & \kbd{C-x 5 d} \\ найти таг в другом окне & \kbd{C-x 4 .} & \kbd{C-x 5 .} \\ \end{tabular} \begin{tabular}{p{\ColWidth}l} увеличить высоту окна & \kbd{C-x \^} \\ сузить текущее окно & \kbd{C-x \{} \\ расширить текущее окно & \kbd{C-x \}} \\ \end{tabular} \section{Форматирование} \begin{tabular}{p{\ColWidth}l} сделать отступ для текущей {\bf строки} (в зависимости от режима) & \kbd{TAB} \\ сделать отступ для {\bf области} (в зависимости от режима) & \kbd{C-M-$\backslash$} \\ сделать отступ для {\bf выражения} (в зависимости от режима) & \kbd{C-M-q} \\ сделать отступ к заданной {\it arg\/} колонке & \kbd{C-x TAB} \\ вставить новую строку после курсора & \kbd{C-o} \\ сдвинуть остаток строки вертикально вниз & \kbd{C-M-o} \\ удалить пустые строки вокруг курсора & \kbd{C-x C-o} \\ объединить строку с предыдущей (со следующими arg) & \kbd{M-\^} \\ удалить пустое пространство вокруг курсора & \kbd{M-$\backslash$} \\ поместить только один пробел в позиции курсора & \kbd{M-SPC} \\ отформатировать текущий параграф & \kbd{M-q} \\ установить столбец заполнения & \kbd{C-x f} \\ установить префикс заполнения каждой строки & \kbd{C-x .} \\ установить начертание (face) & \kbd{M-g} \\ \end{tabular} \section{Изменение регистра} \begin{tabular}{p{\ColWidth}l} сделать буквы слова заглавными & \kbd{M-u} \\ сделать буквы слова строчными & \kbd{M-l} \\ сделать первую букву слова заглавной & \kbd{M-c} \\ сделать буквы области заглавными & \kbd{C-x C-u} \\ сделать буквы области строчными & \kbd{C-x C-l} \\ \end{tabular} \section{Минибуфер} Следующие клавиши (ключи) определены в минибуфере. \begin{tabular}{p{\ColWidth}l} дополнить насколько возможно & \kbd{TAB} \\ дополнить до одного слова & \kbd{SPC} \\ дополнить и выполнить & \kbd{RET} \\ показать возможные дополнения & \kbd{?} \\ выбрать предыдущую строку из истории ввода & \kbd{M-p} \\ выбрать следующую строку из истории ввода & \kbd{M-n} \\ поиск в истории по регулярному выражению в обратном напрвлении & \kbd{M-r} \\ поиск в истории по регулярному выражению в прямом напрвлении & \kbd{M-s} \\ прервать команду & \kbd{C-g} \\ \end{tabular} Наберите \kbd{C-x ESC ESC} для редактирования и повторения последней команды набранной в минибуфере. Наберите \kbd{F10}, чтобы работать с пунктами меню при помощи команд минибуфера. \section{Буфера} \begin{tabular}{p{\ColWidth}l} выбрать другой буфер & \kbd{C-x b} \\ выдать список всех буферов & \kbd{C-x C-b} \\ уничтожить буфер & \kbd{C-x k} \\ \end{tabular} \section{Перестановка данных} \begin{tabular}{p{\ColWidth}l} обменять местами {\bf символы} & \kbd{C-t} \\ обменять местами {\bf слова} & \kbd{M-t} \\ обменять местами {\bf строки} & \kbd{C-x C-t} \\ обменять местами {\bf выражения} & \kbd{C-M-t} \\ \end{tabular} \section{Проверка правописания} \begin{tabular}{p{\ColWidth}l} проверить текущее слово & \kbd{M-\$} \\ проверить все слова в области & \kbd{M-x ispell-region} \\ выполнить проверку всего буфера & \kbd{M-x ispell-buffer} \\ \end{tabular} \section{Теги} \begin{tabular}{p{\ColWidth}l} найти определение тега & \kbd{M-.} \\ использовать новый файл с тегами & \kbd{M-x visit-tags-table} \\ поиск по шаблону по всей таблице тегов & \kbd{M-x tags-search} \\ выполнить query-replace над всеми файлами & \kbd{M-x tags-query-replace} \\ продолжить поиск или поиск-замену тега & \kbd{M-,} \\ \end{tabular} \section{Командные процессоры} \begin{tabular}{p{\ColWidth}l} Выполнить команду командного процессора & \kbd{M-!} \\ выполнить команду командного процессора над областью & \kbd{M-|} \\ пропустить содержимое области через команду командного процессора & \kbd{C-u M-|} \\ запустить командный процессор в окне \kbd{*shell*} & \kbd{M-x shell} \\ \end{tabular} \section{Прямоугольные области} \begin{tabular}{p{\ColWidth}l} скопировать прямоугольную область в регистр & \kbd{C-x r r} \\ удалить прямоугольную область & \kbd{C-x r k} \\ вставить последную уничтоженную прямоугольную область & \kbd{C-x r y} \\ открыть прямоугольную область, сдвигая текст вправо & \kbd{C-x r o} \\ очистить прямоугольную область & \kbd{C-x r c} \\ предварить каждую строку строкой текста & \kbd{C-x r t} \\ \end{tabular} \section{Сокращения} \begin{tabular}{p{\ColWidth}l} добавить глобальное сокращение & \kbd{C-x a g} \\ добавить локальное для режима сокращение & \kbd{C-x a l} \\ добавить глобальное значение для данного сокращения & \kbd{C-x a i g} \\ добавить специфическое для режима значение данного сокращения & \kbd{C-x a i l} \\ явно вставить значение для сокращения & \kbd{C-x a e} \\ динамически дополнить предыдущее слово & \kbd{M-/} \\ \end{tabular} \section{Регулярные выражения} \begin{tabular}{p{\ColWidth}l} любой одиночный символ (за исключением символа новой строки) & \kbd{. {\rm(dot)}} \\ ноль или более повторений & \kbd{*} \\ одно или более повторений & \kbd{+} \\ ноль или одно повторение & \kbd{?} \\ экранировать специальный символ {\it c\/} & \kbd{$\backslash${\it c}} \\ выбор между альтернативами (``или'') & \kbd{$\backslash|$} \\ группировка & \kbd{$\backslash$( {\rm$\ldots$} $\backslash$)} \\ текст в {\it n\/}-й группе & \kbd{$\backslash${\it n}} \\ граница слова & \kbd{$\backslash$b} \\ не граница слова & \kbd{$\backslash$B} \\ \end{tabular} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf объект} & {\bf начало соответствия} & {\bf конец соответствия} \\ строка & \kbd{\^} & \kbd{\$} \\ слово & \kbd{$\backslash$<} & \kbd{$\backslash$>} \\ буфер & \kbd{$\backslash$`} & \kbd{$\backslash$'} \\ \end{tabular} \begin{tabular}{p{\ColWidth}p{\ColThreeWidth}p{\ColThreeWidth}} {\bf класс символов} & {\bf соответ\-ствует им} & {\bf соответ\-ствует другим} \\ явный набор & \kbd{[ {\rm$\ldots$} ]} & \kbd{[\^ {\rm$\ldots$} ]} \\ символ-буква & \kbd{$\backslash$w} & \kbd{$\backslash$W} \\ символ с синтаксисом {\it c} & \kbd{$\backslash$s{\it c}} & \kbd{$\backslash$S{\it c}} \\ \end{tabular} \section{Международные наборы символов} \begin{tabular}{p{\ColWidth}l} выбрать язык & \kbd{C-x RET l} \\ показать все возможные методы ввода & \kbd{M-x list-input-methods} \\ разрешить или запретить метод ввода & \kbd{C-$\backslash$} \\ установить систему кодирования для следующей команды & \kbd{C-x RET c} \\ показать список всех систем кодирования & \kbd{M-x list-coding-systems} \\ выбрать предпочтительную систему кодирования & \kbd{M-x prefer-coding-system} \\ \end{tabular} \section{Информация (система Info)} \begin{tabular}{p{\ColWidth}l} запустить систему доступа к документации & \kbd{C-h i} \\ найти указанную функцию или переменную в документации & \kbd{C-h S} \\ \end{tabular} Перемещение внутри узла (нодами): \begin{tabular}{p{\ColWidth}l} прокрутка вперед & \kbd{SPC} \\ прокрутка назад & \kbd{DEL} \\ перейти к началу узла & \kbd{. {\rm (dot)}} \\ \end{tabular} Перемещение между узлами: \begin{tabular}{p{\ColWidth}l} {\bf следующий} узел & \kbd{n} \\ {\bf предыдущий} узел & \kbd{p} \\ перейти к {\bf верхнему} узлу & \kbd{u} \\ выбрать пункт меню по имени & \kbd{m} \\ выбрать {\it n\/}-й пункт меню по номеру (1--9) & \kbd{{\it n}} \\ перейти по ссылке (возврат с помощью \kbd{l}) & \kbd{f} \\ возвратится к последнему просмотренному узлу & \kbd{l} \\ возвратится к узлу-каталогу & \kbd{d} \\ Перейти к верхему узлу файла & \kbd{t} \\ перейти к узлу, заданному именем & \kbd{g} \\ \end{tabular} Другие команды: \begin{tabular}{p{\ColWidth}l} запустить {\bf учебник} по системе документации & \kbd{h} \\ поиск темы в индексе & \kbd{i} \\ поиск в узлах с помощью регулярных выражений & \kbd{s} \\ {\bf прекратить работу} с документацией & \kbd{q} \\ \end{tabular} \section{Регистры} \begin{tabular}{p{\ColWidth}l} сохранить область в регистре & \kbd{C-x r s} \\ вставить содержимое регистра в буфер & \kbd{C-x r i} \\ сохранить положение курсора в регистре & \kbd{C-x r SPC} \\ перейти к положению курсора, сохраненному в регистре & \kbd{C-x r j} \\ \end{tabular} \section{Клавиатурные макросы} \begin{tabular}{p{\ColWidth}l} {\bf начать} определение клавиатурного макроса & \kbd{C-x (} \\ {\bf закончить} определение клавиатурного макроса & \kbd{C-x )} \\ {\bf выполнить} последний определенный макрос & \kbd{C-x e} \\ дополнить последний определенный макрос & \kbd{C-u C-x (} \\ задать имя для последнего определенного макроса & \kbd{M-x name-last-kbd-macro} \\ вставить в буфер определение макроса на языке Lisp & \kbd{M-x insert-kbd-macro} \\ \end{tabular} \section{Команды, связанные с Emacs Lisp} \begin{tabular}{p{\ColWidth}l} вычислить {\bf выражение} перед курсором & \kbd{C-x C-e} \\ вычислить текущую функцию {\bf defun} & \kbd{C-M-x} \\ вычислить {\bf область} как выражение & \kbd{M-x eval-region} \\ считать и вычислить выражение из минибуфера & \kbd{M-:} \\ загрузить из стандартного системного каталога & \kbd{M-x load-library} \\ \end{tabular} \section{Простая настройка} \begin{tabular}{p{\ColWidth}l} настроить переменные и оформление (faces) & \kbd{M-x customize} \\ \end{tabular} % The intended audience here is the person who wants to make simple % customizations and knows Lisp syntax. Создание глобальных привязок клавиш (ключей) на Emacs Lisp (примеры): \begin{verbatim} (global-set-key "\C-cg" 'goto-line) (global-set-key "\M-#" 'query-replace-regexp) \end{verbatim} \section{Написание команд} \begin{verbatim} (defun () "" (interactive "