Разнообразные команды – ЧАСТЬ 1

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

30.1  Gnus

Gnus — это пакет Emacs, разработанный в первую очередь для чтения и отправки новостей Usenet. Его также можно использовать для чтения и написания ответов на сообщения из многих других источников — почты, удаленных каталогов, дайджестов и других.

Здесь мы даем введение в Gnus и описываем некоторые основные возможности. Для получения подробной информации о Gnus наберите M-x info и выберите затем руководство по Gnus.

Чтобы запустить Gnus, напечатайте M-x gnus hRETi.

30.1.1  Буферы  Gnus

В противоположность большинству обычных пакетов Emacs, Gnus использует для показа информации и получения команд несколько разных буферов. Большую часть времени пользователи проводят в трех буферах:  буфере групп, буфере резюме и буфере статьи.

Буфер групп содержит перечень групп.  Это первый буфер, который Gnus показывает после запуска.  Обычно в нем показаны только те  группы,  на которые вы подписаны, и в которых есть непрочтенные статьи.   Используйте  этот буфер для выбора конкретной группы.

Буфер резюме построчно  перечисляет статьи одной группы. По умолчанию для каждой статьи показываются автор, заголовок и число строк, но это можно настроить по своему вкусу, как и большую часть того, что отображает Gnus. Буфер резюме создается, когда вы выбираете группу  в буфере групп,  и уничтожается, когда вы покидаете  эту группу. Используйте этот буфер для выбора статьи.

Буфер статьи показывает саму статью. При обычном использовании Gnus вы не выбираете этот буфер — все полезные команды, предназначенные для действий над статьей, работают из буфера резюме. Но вы можете выбрать буфер статьи и выполнять все команды Gnus из него, если хотите.

30.1.2  Когда Gnus запускается

При запуске Gnus считывает ваш файл инициализации  новостей ‘.newsrc’  и пытается установить связь с локальным сервером новостей, который служит хранилищем статей. Сервер новостей не обязан быть тем же компьютером, на который вы вошли.

Если вы запустили Gnus и соединились с сервером, но не видите  в буфере групп  ни одной группы, наберите L или A k, чтобы получить перечень всех групп. Затем нажимайте u, чтобы переключать подписку на группы.

Когда  вы запускаете  Gnus первый раз, он подписывает  вас на несколько избранных групп.   Все остальные группы  сначала уничтожены с вашей точки  зрения; вы можете получить их перечень с помощью  A k. Все новые группы, появляющиеся в дальнейшем на сервере, становятся  для вас зомбированными;  наберите A z, чтобы получить их перечень. Вы можете подписаться на группы, показанные в этих списках, используя команду u.

Когда вы покидаете Gnus при помощи q, он автоматически записывает в ваших файлах инициализации ‘.newsrc’  и ‘.newsrc.eld’  статус подписки всех групп.   Обычно вам не стоит редактировать эти файлы вручную, но вы можете это делать, если знаете как.

30.1.3  Обзор команд Gnus

Чтение новостей — это двухшаговый процесс:

1.  Выберите группу в буфере групп.

2.  Выбирайте статьи в буфере резюме.  Каждая выбранная статья показывается в буфере статьи в большом окне под буфером резюме в маленьком окне.

Каждый буфер Gnus имеет свои особые команды; однако, смысл любого данного ключа в различных буферах Gnus обычно аналогичен, даже  если и различается. Вот команды буферов групп и резюме:

q                В буфере групп, обновляет файл инициализации  ‘.newsrc’  и покидает Gnus.

В буфере резюме, покидает текущую группу и возвращает в буфер групп.  Та-

ким образом, дважды нажав q, вы выйдете из Gnus.

L                В буфере групп, перечисляет все доступные  группы на вашем сервере новостей

(кроме тех, что вы уничтожили).  Это может быть длинный список!

l       В буфере групп, перечисляет только те группы, на которые вы подписаны, и которые содержат непрочтенные статьи.

u                В буфере групп,  отменяет подписку (или устанавливает ее)  на  группу,  перечисленную  в строке, в которой находится точка.  Когда вы выходите из Gnus, нажав q, Gnus перечисляет в вашем файле ‘.newsrc’  те группы, на которые вы подписаны. При следующем запуске Gnus вы не увидите эту группу,  потому что обычно Gnus показывает только группы, на которые вы подписаны.

C-k             В буфере групп, “уничтожает” группу на текущей строке — даже не перечисляет ее отныне в ‘.newsrc’.   Это затрагивает как текущий сеанс Gnus, так и последующие.

Когда вы покидаете Gnus при помощи q, Gnus записывает информацию в файле

‘.newsrc’,  описывая  все группы, кроме тех, что вы “уничтожили”.

hSPCi              В буфере групп, выбирает группу на строке под курсором и показывает первую непрочтенную статью в этой группе.

В буфере резюме,

Выбирает статью под курсором, если ни одна еще не выбрана.

Прокручивает текст текущей статьи (если такая есть).

Выбирает следующую непрочтенную статью, если текущая статья кончи-

лась.

Таким образом, вы можете пройти по всем статьям, последовательно нажимая

hSPCi.

hDELi              В буфере групп, перемещает точку к предыдущей группе, содержащей непро-

чтенные статьи.

В буфере резюме, прокручивает текст статьи назад.

n                Перемещает точку к следующей непрочитанной  группе или выбирает следую-

щую непрочитанную статью.

p                Перемещает точку к предыдущей непрочитанной группе или выбирает преды-

дущую непрочитанную статью.

C-n

C-p            Перемещает точку к следующему или предыдущему пункту,  даже если он по-

мечен как прочтенный. Это не выбирает группу или статью на той строке.

s                 В буфере резюме,  начинает наращиваемый поиск в тексте  текущего буфера статьи, точно так же, как если бы вы переключились в буфер статьи и набрали C-s.

M-s regexp hRETi

В буфере резюме, производит  поиск статей, содержащих  совпадение с regexp.

30.2  Запуск команд оболочки из Emacs

В Emacs есть команды для передачи одиночных командных строк подчиненным процессам оболочки. Существует возможность интерактивного запуска оболочки с вводом и выводом в буфер Emacs с именем ‘*shell*’.

M-! кмд hRETi

Запустить  командную строку  оболочки кмд  и  показать ее  вывод (shellcommand).

M-| кмд hRETi

Запустить  командную строку  оболочки кмд с содержимым области в качестве ввода; возможна замена содержимого  области выводом команды (shellcommand-on-region).

M-x shell  Запустить  подоболочку с вводом и выводом через буфер Emacs.    Затем вы можете задавать команды интерактивно.

30.2.1  Отдельные команды оболочки

M-!  (shell-command) считывает в минибуфере  строку текста и выполняет ее  как команду оболочки в подоболочке, созданной только для этой команды.  Стандартный ввод команде поступает из нулевого устройства. Если команда оболочки производит какой-либо вывод, то он поступает в буфер Emacs с именем ‘*Shell Command Output*’,  который отражается не в выбранном, а в другом окне. Числовой аргумент, как в M-1 M-!, велит команде вставить весь вывод в текущий буфер. В этом случае точка остается перед выводом, а метка устанавливается за ним.

Если командная строка оболочки завершается на ‘&’, она выполняется асинхронно. Для синхронной команды оболочки shell-command возвращает выходное значение этой команды (0 обозначает успех), когда она вызывается из Лисп-программы.

M-| (shell-command-on-region) похожа на M-!, но команде оболочки передается в качестве стандартного ввода содержимое области, а не пустота.  Если используется числовой аргумент, означающий вставку вывода в текущий буфер, то старая область сначала удаляется, а потом заменяется выводом. Она возвращает выходное значение команды, когда запускается из лисповской программы.

Обе команды M-! и M-| используют оболочку, указанную переменной shell-file-name. При запуске Emacs эта переменная инициализируется на основании вашей переменной среды SHELL.  Если в имени этого файла не указывается  каталог, то просматриваются каталоги в списке exec-path;  этот список инициализируется при запуске Emacs по переменной среды  PATH. Ваш файл ‘.emacs’ может отменять либо одну, либо обе эти инициализации по умолчанию.

И M-!  и M-|  ожидают завершения команды оболочки.  Чтобы остановить ожидание, используйте  команду C-g; она завершает команду оболочки сигналом SIGINT — тем же сигналом, который обычно генерируется оболочкой при вводе C-c.  Emacs ждет, пока эта

команда на самом деле завершится. Если команда оболочки  не остановилась  (потому что она игнорирует сигнал SIGINT), наберите C-g снова; это пошлет сигнал SIGKILL, который невозможно проигнорировать.

Чтобы указать систему кодирования для M-! или M-|, используйте команду C-x hRETc

непосредственно  перед ними. См. Раздел 18.9 [Задание кодирования], с. 168.

Сообщения команды об ошибках обычно перемежаются с обычным выводом. Если вы установите переменную shell-command-default-error-buffer равной строке, являющейся именем буфера, протокол ошибок будет вставляться  перед точкой в буфере с этим именем.

30.2.2  Интерактивная подчиненная оболочка

Для запуска интерактивной подоболочки с сохранением протокола в буфере Emacs применяется M-x shell. Эта команда создает (или вновь использует) буфер с именем ‘*shell*’ и запускает подоболочку с вводом, приходящим из этого буфера,  и выводом, идущим в него. То есть, любой “терминальный ввод” для подоболочки приходит из текста в буфере, а любой “терминальный вывод” из подоболочки поступает в буфер, продвигая точку вперед. Для передачи ввода в подоболочку необходимо отправиться в конец буфера, набрать нужное и завершить набором hRETi.

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

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

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

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