Запуск команд по имени

Команды Emacs, которые применяются часто или должны быстро набираться, привязываются к ключам — коротким последовательностям знаков — для удобства использования.  Другие команды Emacs, не нуждающиеся в краткости,  не привязаны к ключам; чтобы запустить их, вы должны обратиться к ним по имени.

По соглашению имя команды создается из одного или более слов, разделенных  дефисами; например, auto-fill-mode или manual-entry. Использование английских слов делает имена команд более легкими для запоминания,  чем составленные из непонятных знаков ключи, даже если слова дольше набирать.

Чтобы запустить на выполнение команду по имени, сначала наберите M-x, за ним имя команды и закончите  набором hRETi.   ‘M-x’ использует минибуфер для чтения имени команды. hRETi  выходит из минибуфера и запускает команду на выполнение. Строка ‘M-x’ показывается в начале буфера как подсказка, чтобы напомнить вам, что вы должны ввести имя команды, которая будет запущена на выполнение. См.  Глава 5 [Минибуфер], с. 45, для полной информации о свойствах минибуфера.

При вводе имени команды вы можете  использовать завершение. Например, команда

forward-char может быть запущена по имени при помощи

M-x forward-char hRETi

или

M-x forw  hTABi  c hRETi

Заметим, что forward-char — это та же самая команда, которую вы вызываете с помощью ключа C-f.   Любая команда Emacs может быть вызвана по имени с использованием M-x независимо от того, существует ли связанный с ней ключ.

Если во время считывания имя команды вы набираете C-g, то вы отменяете команду

M-x и покидаете минибуфер, по завершении поднимаясь на верхний уровень.

Чтобы передать числовой аргумент команде,  которую вы вызываете с помощью M-x, задайте числовой аргумент перед M-x. M-x передает аргумент команде, которую вызывает. Значение аргумента появляется в подсказке в то время, когда считывается имя команды.

Если набираемая  вами команда привязана к  собственному  ключу,  Emacs говорит  об этом в эхо-области спустя две секунды после завершения команды (если вы до этого ничего не ввели).  Например, если вы напечатаете M-x forward-word, вы получите  сообщение, говорящее,  что эту же  команду можно запустить более  просто, введя M-f.   Вы можете отключить эти сообщения, установив suggest-key-bindings в значение nil.

В этом руководстве при описании команд, запускаемых по имени, мы обычно опускаем hRETi,  который необходим  для ограничения имени.  То есть мы чаще  пишем M-x auto-fill-mode, а не M-x auto-fill-mode hRETi.  Мы упоминаем hRETi, только когда необходимо подчеркнуть его присутствие, например при описании последовательности ввода, которая содержит имя команды и следующие за ним аргументы.

M-x определен на выполнение команды execute-extended-command, которая отвечает за считывание имени другой команды и ее запуск.

7 Справка

Emacs предоставляет широкие возможности предоставления справки, которые доступны через один знак, C-h. C-h — это префиксный ключ, который используется только для команд печати документации. Знаки, которые вы можете набрать после C-h, называются параметрами справки.  Одним из них является C-h; c его помощью вы запрашиваете информацию об использовании C-h.  Функциональная клавиша hF1i  служит эквивалентом C-h.

C-h C-h (help-for-help) печатает список всех возможных параметров справки с кратким описанием каждого из них. До набора параметра справки вы можете пролистать этот список с помощью hSPCили hDELi.

C-h или hF1означает “помощь” также  и во многих других контекстах.  Например, в процессе работы query-replace они описывают доступные возможные действия над текущим найденным совпадением. После префиксного ключа они выводят перечень вариантов, которые могут  следовать за этим префиксным ключом.  (Некоторые префиксные ключи не поддерживают C-h, потому что они определяют для него другие значения; но все они поддерживают hF1i.)

Большинство справочных буферов используют специальный основной режим, режим

Help, который позволяет вам удобно делать прокрутку с помощью hSPCи hDELi.

Ниже приведен обзор всех определенных  команд для получения справки.

C-h a regexp hRETi

Показать список команд, чьи имена соответствуют регулярному выражению

regexp (apropos-command).

C-h b          Показать таблицу всех привязок ключей, действующих на данный  момент в следующем  порядке:   привязки текущих  второстепенных режимов,  привязки основного режима и глобальные привязки (describe-bindings).

C-h c ключ

Напечатать имя команды, которую запускает на выполнение заданный ключ (describe-key-briefly). Здесь c означает ‘character’ (‘знак’).  Для получения более подробной информации о ключе, используйте C-h k.

C-h f функция hRETi

Показать документацию на лисповскую функцию с именем функция (describefunction).  Так  как  команды являются лисповскими функциями, вы можете использовать имя команды.

C-h h          Вывести файл ‘hello’, который показывает примеры различных наборов зна-

ков.

C-h i    Запустить Info, программу для просмотра  файлов документации (info). Пол-

ное руководство  по Emacs существует как диалоговый  файл в Info.

C-h k ключ

Показать имя и описание команды, которую запускает ключ (describe-key).

C-h l    Показать описание последних 100 набранных  вами знаков (view-lossage).

C-h m                Показать описание текущего основного режима (describe-mode).

C-h n          Показать описание изменений в Emacs, первым самое последнее (view-emacsnews).

C-h p          Найти пакет по ключевому слову (finder-by-keyword).

C-h s          Показать текущее содержимое синтаксической таблицы и объяснить, что оно означает (describe-syntax). См. Раздел 31.6 [Синтаксис], с. 366.

C-h t     Войти в интерактивный самоучитель по Emacs (help-with-tutorial).

C-h v пер hRETi

Показать описание лисповской переменной пер (describe-variable).

C-h w команда hRETi

Напечатать, какие ключи запускают на выполнение команду с именем команда

(where-is).

C-h C кодировка hRETi

Вывести  описание системы кодирования с  именем кодировка  (describecoding-system).

C-h C hRETi

Описать используемую в данный момент систему кодирования.

C-h I метод hRETi

Описать метод ввода (describe-input-method).

C-h L языковаясреда hRETi

Показать сведения о наборах знаков, системах кодирования и методах ввода,

используемых в языковойсреде (describe-language-environment).

C-h C-c      Показать условия копирования GNU Emacs.

C-h C-d      Показать информацию о получении новых версий GNU Emacs.

C-h C-f функция hRETi

Войти в Info и перейти к ноде, описывающей функцию Emacs с именем функция

(Info-goto-emacs-command-node).

C-h C-k ключ

Войти в Info и перейти к  ноде,  описывающей  заданную последовательность ключей (Info-goto-emacs-key-command-node).

C-h C-p      Показать информацию о Проекте GNU.

C-h hTABязыковойсимвол hRETi

Показать документацию Info на языковойсимвол в соответствии с языком про-

граммирования, на котором вы пишите (info-lookup-symbol).

7.1  Описания для ключей

Основными параметрами для C-h являются C-h c  (describe-key-briefly) и  C-h k (describe-key).   C-h c ключ  печатает в эхо-области  имя команды, к  которой привязан ключ.  Например, C-h c C-f  печатает ‘forward-char’.  Поскольку имена команд выбираются так,  чтобы они описывали действие команды, это удобный способ получить очень короткое описание того, что делает ключ.

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

C-h c и C-h k работают для любых видов ключей, включая функциональные клавиши и события от мыши.

7.2  Справка по имени  команды или переменной

C-h f (describe-function) читает имя функции Лиспа, используя минибуфер,  затем показывает строку документации этой функции в окне. Так как команды — это лисповские функции, вы можете  пользоваться этим для получения описания команды, известной по имени. Например,

C-h f auto-fill-mode  hRETi

выдает документацию для auto-fil-mode.  Это единственный  способ увидеть документацию команды, которая не привязана  к какому-нибудь ключу (одной из тех,  которых вы обычно вызываете при помощи M-x).

C-h f также  полезна для лисповских функций, которые вы планируете  использовать в программе  на Лиспе.   Например, если вы просто написали выражение (make-vector len) и хотите быть уверенными в том, что вы верно использовали make-vector, наберите C-h f make-vector hRETi.   Так  как C-h f воспринимает имена всех функций, а не только имена команд, то вы можете обнаружить, что некоторые из ваших любимых сокращений, которые работают в M-x, не работают в C-h f.   Сокращения могут  быть уникальными среди имен команд и уже не быть уникальными, когда рассматриваются также и имена других функций.

Имя функции для C-h f имеет значение по умолчанию, которое используется,  если вы наберете hRETi, оставляя минибуфер пустым. По умолчанию это будет функция, вызванная самым глубоким лисповским выражением в буфере в районе точки, при условии, что это правильное, определенное имя функции Лиспа. Например, если точка расположена вслед за текстом ‘(make-vector (car x)’,  то самый глубокий список, содержащий точку,  это тот, что начинается с ‘(make-vector’; таким образом, по умолчанию будет описана функция make-vector.

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

C-h w команда hRETi  сообщает вам, какие ключи привязаны к команде.   Она печатает список ключей в эхо-области. Если она говорит,  что команда не привязана  ни к одному ключу, вы должны использовать для вызова этой команды M-x. C-h w запускает команду where-is.

C-h v (describe-variable) похожа на C-h f,  но описывает переменные  Лиспа, а на функции.  Ее значение по умолчанию — это лисповский символ поблизости или перед точкой, но только если это имя известной лисповской переменной. См. Раздел 31.2 [Переменные], с. 343.

7.3  Поиск по контексту

Более сложный вид запросов — это вопросы вроде “Какие команды используются для работы с файлами?” Чтобы задать такой вопрос, наберите C-h a file hRETi, которая покажет список всех имен команд, которые содержат ‘file’, такие как copy-file, find-file и так далее. Вместе с именем команды показывается краткое описание того, как ее использовать, и какие ключи ее запускают.  Например, вам сообщат, что вы можете запустить find-file, набрав C-x C-f.  Здесь а в C-h — это сокращение для ‘Apropos’, C-h a запускает на выполнение функцию command-apropos.  Эта команда проверяет только команды (интерактивные функции); если вы зададите префиксный аргумент, она просмотрит также и неинтерактивные функции.

Так как C-h a ищет только функции, чьи имена содержат заданную вами строку, вы должны быть изобретательны в выборе строк. Если вы ищете команды для уничтожения

в обратном направлении, и C-h a kill-backward hRETничего не показывает,  не отчаивайтесь. Попробуйте просто kill, или просто backward или просто back. Будьте настойчивы. Притворитесь, что вы играете  в Adventure.  Также  отметим, что для большей гибкости вы можете  использовать в качестве аргумента регулярное выражение (см.  Раздел 12.5 [Регулярные выражения], с. 91).

Здесь представлен набор аргументов для передачи в C-h a, который охватывает множество классов команд, так как существуют строгие соглашения для имен стандартных команд Emacs. Давая вам почувствовать принятые соглашения об именовании, этот набор также должен служить вам помощью в совершенствовании технических приемов для подбора строк apropos.

char, line, word, sentence, paragraph, region, page, sexp, list, defun, rect, buffer, frame, window, face, file, dir, register, mode, beginning, end, forward, backward, next, previous, up, down, search, goto, kill, delete, mark, insert, yank, fill, indent, case, change, set, what, list, find, view, describe, default.

Для получения перечня всех пользовательских переменных, которые соответствуют регулярному выражению, используйте команду M-x apropos-variable. Эта команда показывает по умолчанию только пользовательские  переменные; если вы зададите префиксный аргумент, она просмотрит все переменные.

Чтобы перечислить  все лисповские символы, которые содержат совпадение с регулярным выражением, а не только те,  которые определены в качестве команд, используйте команду M-x apropos, а не C-h a. По умолчанию эта команда не проверяет привязки ключей; если вы хотите узнать их, задайте этой команде префиксный аргумент.

Команда apropos-documentation похожа на apropos, но производит поиск совпадений с регулярным выражением  не только в именах символов, но и в строках описания.

Команда apropos-value действует как apropos, за исключением того, что ищет совпадения с регулярным выражением в значениях символов. Эта команда по умолчанию не проверяет определения функций или списки свойств; задайте ей числовой аргумент, если вы хотите проверить и их.

Если переменная apropos-do-all не равна nil, то все описанные выше команды ведут себя так, как-будто им задан префиксный аргумент.

Если вы хотите получить больше информации об определении функции, о переменной или о свойствах символа, перечисленных  в буфере Apropos, вы можете щелкнуть на них Mouse-2 или переместиться туда и нажать hRETi.

7.4  Поиск в библиотеках Лиспа по ключевым словам

Команда C-h p позволяет вам производить поиск в стандартных библиотеках Emacs Lisp по тематическим ключевым словам. Вот неполный перечень ключевых слов, которые вы можете использовать:

abbrev — управление сокращениями, быстрые клавиши, макросы. bib — поддержка обработчика библиографий bib.

c — поддержка языков Си и Си++.

calendar — поддержка календаря и операций со временем. comm — коммуникации, сети, удаленный доступ к файлам. data — поддержка редактирования  файлов с данными.

docs — поддержка документации Emacs. emulations — эмуляция других редакторов. extensions — расширения языка Emacs Lisp.

faces — поддержка разных начертаний (шрифтов и цветов).

frames — поддержка фреймов и оконных систем. games — игры, шутки и развлечения.

hardware — поддержка интерфейсов с экзотической аппаратурой. help — поддержка интерактивных справочных систем.

hypermedia — поддержка для ссылок внутри текста. i18n — поддержка разных языков и алфавитов.

internal — внутренний код Emacs, сборка, значения по умолчанию.

languages — специализированные режимы для редактирования кода. lisp — поддержка использования Лиспа (включая Emacs Lisp).

local — библиотеки, локальные для вашей системы.

maint — средства поддержки для группы разработчиков Emacs. mail — режимы для работы с электронной почтой.

matching — поисковые программы.

news — поддержка чтения и отправки сетевых новостей.

non-text — поддержка для редактирования нетекстовых файлов. oop — поддержка объектно-ориентированного программирования. outlines — просмотр иерархической структуры  текста.

processes — процессы, оболочка, компиляция и управление задачами. terminals — поддержка разных типов терминалов.

tex — поддержка для программы компьютерного набора TEX. tools — утилиты для программирования.

unix — интерфейсы или эмуляторы возможностей Unix. vms — поддержка VMS.

wp — обработка текста.

7.5  Справка о поддержке различных языков

Для получения справки о поддержке определенной языковой среды используйте команду C-h L (describe-language-environment). См. Раздел 18.3 [Языковые среды], с. 162. Эта команда говорит  вам, для каких  языков полезна данная языковая среда, и перечисляет наборы знаков, системы кодирования и методы ввода, которые используются в этой среде. Она также показывает  образец текста для демонстрации его внешнего вида.

Команда C-h h (view-hello-file) отображает файл ‘etc/HELLO’, который показывает,

как сказать “Здравствуйте” на разных языках.

Команда C-h I (describe-input-method) описывает метод ввода, либо заданный явно, либо, по умолчанию, используемый в данный момент. См.  Раздел 18.4 [Методы ввода], с. 163.

Команда C-h C (describe-coding-system) описывает систему кодирования, либо заданную явно, либо, по умолчанию, используемые в данный момент. См. Раздел 18.7 [Системы кодирования], с. 165.

7.6  Команды режима Help

Справочные  буферы предоставляют  команды режима View (см.  Раздел 14.10 [Файлы

Разное], с. 132) плюс несколько собственных особых команд.

hSPCi              Прокручивает вперед.

hDELi              Прокручивает назад.

hRETi             Переходит по перекрестной ссылке в точке.

hTABi              Перемещает вперед к следующей перекрестной ссылке.

S-hTABi         Перемещает назад к предыдущей перекрестной ссылке.

Mouse-2    Переходит по перекрестной ссылке, на которой вы щелкнули.

Когда  в описании появляется  имя команды (см.  Глава 6 [], с. 53) или имя переменной (см.  Раздел 31.2 [Переменные], с. 343), оно обычно показывается в парных одиночных кавычках.  Вы можете щелкнуть на имени с помощью Mouse-2 или передвинуть к нему точку и нажать hRETi, чтобы просмотреть документацию на эту команду или переменную. Используйте C-c C-b для возврата.

Есть удобные команды для перемещения точки к перекрестным ссылкам в тексте справки.  hTABi  (help-next-ref) передвигает точку  вперед к следующей перекрестной  ссылке. Чтобы переместить точку  к  предыдущей ссылке,  используйте  S-hTABi  (help-previousref).

7.7  Другие команды для получения справки

C-h i (info) запускает на выполнение программу Info, которая используется для просмотра структурированных файлов документации. Внутри Info имеется полное руководство по Emacs. В конце  концов там будет доступна вся документация по системе GNU. Чтобы запустить самоучитель по использованию Info, наберите h после входа в Info.

Если вы зададите числовой аргумент, C-h i запросит имя файла документации. Таким образом вы сможете просмотреть  файл, для которого нет вхождения в меню Info верхнего уровня. Это также удобно, когда вам нужно получить документацию быстро, и вы знаете точное имя этого файла.

Существуют две специальные  справочные команды для получения документации по Emacs через Info.   C-h C-f функция hRETi  входит в Info и переходит непосредственно  к описанию функции Emacs с именем функция. C-h C-k ключ входит в Info и переходит к описанию ключа. Эти ключи запускают команды Info-goto-emacs-command-node и Infogoto-emacs-key-command-node.

При редактировании программы, если у вас есть Info-версия руководства для этого языка программирования, вы можете использовать команду C-h C-i  для просмотра описания символа (ключевого слова, функции или переменной). Детали работы этой программы зависят от основного режима.

Если происходит что-то странное, и вы не уверены, какую команду вы набрали, используйте  C-h l (view-lossage).  C-h l печатает последние 100 набранных вами командных знаков. Если вы увидели команды, которые вам не знакомы, вы можете использовать C-h c, чтобы отыскать информацию о том, что они делают.

Emacs имеет множество основных режимов,  каждый  из  которых  переопределяет несколько ключей и  делает некоторые другие изменения в  работе  редактора.   C-h m (describe-mode)  печатает документацию о текущем основном режиме,  в которой обычно описаны  все команды, измененные в этом режиме.

C-h b (describe-bindings) и C-h s (describe-syntax) предоставляют другую информацию о текущем режиме Emacs. C-h b показывает список всех привязанных  ключей, действующих в данный момент; сначала идут локальные привязки текущих второстепенных режимов, за ними локальные привязки текущего основного режима и, наконец, глобальные привязки (см. Раздел 31.4 [Привязки ключей], с. 356). C-h s показывает содержимое синтаксической таблицы с объяснением синтаксиса каждого знака (см. Раздел 31.6 [Синтаксис], с. 366).

Вы можете получить подобный  перечень для конкретного префиксного ключа, набрав после него C-h. (Есть несколько префиксных ключей, для которых это не работает  — они придают свои привязки для C-h. Один из них — это hESCi, потому что hESCC-h на самом деле эквивалентен  C-M-h, который помечает определение функции.)

Другие параметры C-h показывают разнообразные файлы с полезной информацией. C-h C-w показывает  подробности  об отсутствии гарантий для GNU Emacs. С-h n (view-emacsnews) показывает  файл ‘emacs/etc/NEWS’, который содержит описание изменений в Emacs,

сортированное в хронологическом порядке.  C-h F (view-emacs-FAQ) выводит список часто отвечаемых вопросов о Emacs.  C-h t (help-with-tutorial) показывает обучающее руководство по Emacs. C-h C-c (describe-copying) показывает файл ‘emacs/etc/COPYING’, который объясняет условия, которые вы должны выполнить при распространении копий Emacs. C-h C-d (describe-distribution) показывает файл ‘emacs/etc/DISTRIB’, в котором рассказывается,  как  вы можете  заказать копию последней  версии Emacs.  C-h C-p (describe-project) выводит общую информацию о Проекте GNU.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий