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

M-x sort-numeric-fields

Эта команда подобна M-x sort-fields, за исключением того, что для каждой строки указанное поле превращается в число, и сравниваются уже эти числа.

‘10’ предшествует ‘2’, когда рассматривается как текст, но следует за ‘2’, когда рассматривается как число.

M-x sort-columns

Как  M-x sort-fields,  за исключением того,  что  используемый  для сравнения текст получается в пределах каждой строки из фиксированного диапазона столбцов. Объяснение приведено ниже.

M-x reverse-region

Обратить порядок строк в области.  Это полезно для сортировки в порядке убывания по полям или колонкам, так  как  данные команды сортировки не имеют средств для этого.

Например,  если буфер содержит такой текст:

On  systems where clash  detection (locking of  files being  edited) is implemented,  Emacs  also  checks the  first time  you modify  a buffer whether  the  file has changed on disk  since  it was last visited or saved.    If it has,  you are  asked to  confirm that you want to  change the  buffer.

применение M-x sort-lines ко всему буферу даст следующее:

On  systems where clash  detection (locking of  files being  edited) is implemented,  Emacs  also  checks the  first time  you modify  a buffer saved.    If it has,  you are  asked to  confirm that you want to  change the  buffer.

whether  the  file has changed on disk  since  it was last visited or

где заглавная ‘O’ идет перед всеми строчными буквами. Если вы вместо этого примените

C-u 2 M-x sort-fields, то получите следующее:

implemented,  Emacs  also  checks the  first time  you modify  a buffer saved.    If it has,  you are  asked to  confirm that you want to  change the  buffer.

On  systems where clash  detection (locking of  files being  edited) is

whether  the  file has changed on disk  since  it was last visited or

где ключами сортировки были ‘Emacs’, ‘If’, ‘buffer’, ‘systems’ и ‘the’.

M-x sort-columns требует более подробного  объяснения.  Вы указываете колонки, устанавливая точку  на одном столбце, а метку — на другом.  Так как это означает, что вы не можете поставить точку или метку в начале первой строки, с которой должна начаться сортировка, то эта команда использует  необычное определение ‘области’: вся строка с точкой рассматривается как часть области, и так же  все содержимое строки, в которой находится метка, и все строки между ними.

Например, для сортировки таблицы по информации,  размещенной в столбцах с 10 по

15, метку можно поставить в первой строке таблицы в столбце 10, а точку  в столбце 15 в последней строке таблицы и затем запустить sort-columns. Или вы можете поставить метку в столбце 15 в первой строке, а точку — в столбце 10 в последней строке.

Это можно рассматривать как  сортировку прямоугольника, заданного точкой и меткой, за исключением того, что текст в каждой строке справа и слева от прямоугольника двигается вместе с текстом внутри прямоугольника.  См.  Раздел 9.4 [Прямоугольники], с. 74.

Многие команды сортировки игнорируют  при сравнениях различие в регистре букв,

если sort-fold-case не равна nil.

30.8  Сужение

Сужение означает сосредоточение на некоторой части буфера, при котором оставшаяся часть становится  временно недоступной. Та часть, в которую вы все еще можете попасть, называется доступной частью.  Отмена сужения и переход в состояние, когда весь буфер снова становится доступным, называется расширением. Размер действующего сужения буфера в какое-либо время называется ограничением этого буфера.

Сужение может помочь сконцентрироваться на единственной подпрограмме или абзаце, убирая лишнее. Оно также может быть использовано для ограничения диапазона действия команды замены или повторяющегося макроса клавиатуры.

C-x n n      Сузить до области между точкой и меткой (narrow-to-region).

C-x n w         Расширить так, чтобы буфер снова стал полностью доступным (widen).

C-x n p      Сузить до текущей страницы (narrow-to-page).

C-x n d      Сузить до текущего определения функции (narrow-to-defun).

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

Основной командой сужения является C-x n n (narrow-to-region). Она устанавливает ограничения для текущего буфера таким образом, что остается доступным только текст текущей области, но весь текст  перед областью и после  нее  становится недоступным. Точка и метка не изменяются.

Еще вы можете использовать C-x n p (narrow-to-page) для сужения до текущей страницы.  См.  Раздел 21.4 [Страницы], с. 184, определение страницы.  C-x n d (narrow-todefun) сужает до определения функции, содержащего точку (см. Раздел 22.4 [Определения функций], с. 208).

Отмена сужения выполняется командой C-x n w (widen). Она делает весь текст буфера снова доступным.

Вы можете получить информацию о том, до какой части сужен буфер, применив коман-

ду C-x =. См. Раздел 4.9 [Информация о позиции], с. 40.

Поскольку сужение может легко запутать пользователя, не понимающего  его, команда narrow-to-region обычно заблокирована. При попытке ее использования  запрашивается подтверждение и предоставляется возможность  ее включения; если вы задействовали эту команду, подтверждение  больше не требуется. См. Раздел 31.4.11 [Блокирование  команды], с. 364.

30.9  Редактирование текста в две колонки

Режим Two-column позволяет вам удобно редактировать текст в две колонки.  Он ис-

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

Есть два способа войти в двухколоночный режим:

hF22 или C-x 6 2

Входит в режим two-column, слева появляется  текущий буфер, а справа появляется буфер, чье имя основано на имени текущего буфера (2C-two-columns). Если правый буфер еще не существует,  изначально он делается пустым; содержимое текущего буфера не изменяется.

Эта команда подходит, если текущий буфер пуст или содержит текст только одной колонки, и вы хотите добавить вторую.

hF2s or C-x 6 s

Разделяет текущий буфер с текстом в двух колонках на два буфера и показывает их рядом друг с другом (2C-split).  Текущий буфер становится левым буфером, но текст из правой колонки перемещается в правый буфер. Текущий столбец определяет точку раздела.  Разделение начинается  от текущей строки и продолжается до конца буфера.

Эта команда полезна, если у вас уже есть буфер с двухколоночным текстом, и вы хотите временно разделить колонки.

hF2b буфер hRETi

C-x 6 b буфер hRETi

Входит в режим two-column,  используя текущий буфер  в качестве левого и буфер буфер в качестве правого (2C-associate-buffer).

hF2s или C-x 6 s ищет разделитель колонок, который является строкой, стоящей между двух колонок на каждой строке.   Вы можете  задать ширину разделителя с помощью числового аргумента для hF2s; столько знаков, стоящих перед точкой, выразят строкуразделитель. По умолчанию ширина равна 1, поэтому разделитель колонок — это знак перед точкой.

Когда строка содержит разделитель на своем месте, hF2s помещает текст после разделителя в правый буфер и удаляет разделитель. Строки, не имеющие разделителя колонок, оставляются неразбитыми; они остаются в левом  буфере, а в правый буфер помещается для соответствия пустая строка. (Таким образом можно написать строку, которая “проходит по обеим колонкам в двухколоночном режиме”:  написать ее в левом буфере и сделать пустую строку в правом буфере.)

Команда C-x 6 hRETi  или hF2i hRETi  (2C-newline)  вставляет знак новой строки в оба буфера в соответствующих позициях. Это самый простой способ добавить новую строку в двухколоночном тексте, когда вы редактируете его в разных буферах.

Когда  вы отредактировали оба буфера, как вам хотелось, объедините их с помощью hF21 или C-x 6 1 (2C-merge). Это копирует текст из правого буфера как вторую колонку другого буфера. Чтобы вернуться к редактированию в две колонки, используйте hF2s.

Используйте hF2d или C-x 6 d, чтобы разъединить два буфера, оставляя  каждый как есть (2C-dissociate). Если другой буфер, не текущий в момент, когда вы набрали hF2d, оказался пустым, hF2d уничтожает его.

30.10  Редактирование двоичных файлов

Существует специальный основной режим  для  редактирования двоичных  файлов: режим  Hexl.      Чтобы  воспользоваться им,   вызовите   для  обращения к   файлу M-x hexl-find-file  вместо  C-x C-f.       Эта   команда  преобразует содержимое файла в

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

Вы можете также использовать M-x hexl-mode для преобразования существующего  буфера  в шестнадцатиричный вид.  Это полезно, если вы обратились к  файлу обычным способом и потом обнаружили, что это двоичный файл.

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

C-M-d        Вставляет байт с введенным десятичным кодом.

C-M-o        Вставляет байт с введенным восьмиричным кодом.

C-M-x        Вставляет байт с введенным шестнадцатиричным  кодом.

C-x [     Перемещает на начало 1k-байтной “страницы”.

C-x ]     Перемещает на конец 1k-байтной “страницы”.

M-g            Перемещает к адресу, заданному шестнадцатиричным  числом.

M-j             Перемещает к адресу, заданному десятичным числом.

C-c C-c      Покидает режим Hexl, возвращаясь к тому основному режиму, который был в этом буфере до того, как вы вызвали hexl-mode.

30.11  Сохранение сеансов Emacs

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

Чтобы использовать Desktop, вы должны воспользоваться  буфером Customization (см. Раздел 31.2.2 [Простая настройка], с. 344) и установить desktop-enable в отличное от nil значение или добавить такие строки в ваш файл ‘.emacs’:

(desktop-load-default) (desktop-read)

Первый раз, когда вы сохраняете  состояние  сеанса Emacs, вы должны сделать это вручную, с помощью команды M-x desktop-save.   Как  только вы это сделали, при выходе из Emacs состояние будет сохраняться снова — не только в существующем  сеансе Emacs, но и во всех последующих. Вы также можете записать состояние в любое время не выходя из Emacs, снова набрав M-x desktop-save.

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

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

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

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