Основные  команды редактирования – ЧАСТЬ 1

Здесь мы рассказываем основы о том, как ввести текст, сделать изменения и записать текст в файл. Если эти сведения новы для вас, вы можете изучить это более легким способом, запустив самоучитель по Emacs. Чтобы сделать так, запустите Emacs и наберите Control-h t (help-with-tutorial).

Чтобы очистить экран и перерисовать изображение, напечатайте C-l  (recenter).

4.1  Вставка текста

Чтобы вставить печатные знаки в редактируемый вами текст, достаточно просто набрать их.  Таким образом, вводимые вами знаки вставляются в буфер в позиции курсора (то есть в точке;  см.  Раздел 1.1 [Точка], с. 23).  Курсор двигается вперед, и весь текст после курсора тоже сдвигается вперед. Если в буфере был текст ‘FOOBAR’, и курсор стоял перед ‘B’, то если вы наберете  XX, вы получите ‘FOOXXBAR’ c курсором, оставшимся перед

‘B’.

Чтобы удалить текст, который вы только что вставили, используйте hDELi. hDELудаляет знак перед курсором (а не знак под курсором; этот знак стоит после курсора). Курсор и все знаки, стоящие после него, сдвигаются назад. Поэтому, если вы набрали печатные знаки и затем набираете hDELi, набранное отменяется.

Чтобы закончить строку  и начать набирать новую, нажмите  hRETi.   Это вставит в буфер  знак перехода  на новую строку.   Если точка  находится в середине строки, hRETразбивает эту  строку.   Набор hDELi,  когда курсор находится в начале  строки,  удаляет предшествующий  символ новой строки, соединяя таким образом эту и предшествующую строки.

Emacs может разбивать строки автоматически, когда они становятся слишком длинными, если вы включите  специальный второстепенный  режим, называемый режимом Auto Fill.  См. Раздел 21.5 [Заполнение], с. 185, для информации об использовании режима Auto Fill.

Если вы предпочитаете,  чтобы знаки текста замещали (перезаписывали)  существующий текст, а не сдвигали его вправо, вы можете включить второстепенный режим Overwrite. См. Раздел 31.1 [Второстепенные  режимы], с. 341.

Непосредственная вставка работает для печатных знаков и hSPCi, но другие знаки действуют  как  команды редактирования и не  вставляют сами себя.    Если вам требуется вставить управляющий знак или знак, код которого превышает восьмиричное  200, вы должны отменить их особый смысл, набрав перед ними Control-q (quoted-insert). (Название этого знака обычно записывается как C-q для краткости.)  Существует два способа использования C-q:

C-q, за которым следует любой неграфический знак (даже C-g), вставляет этот знак.

C-q, за которым идет последовательность восьмиричных цифр, вставляет знак с  заданным знаковым кодом. Вы можете использовать  любое число восьмиричных цифр; любой знак, не являющийся  цифрой, обрывает последовательность.   Если завершающий знак — это hRETi, он служит только для завершения последовательности; любой другой нецифровой знак сам используется в качестве ввода после завершения последовательности. (Использование восьмиричных последовательностей  запрещено в обычном недвоичном режиме Overwrite, чтобы  дать вам удобный способ вставить цифру вместо замещения ей.)

Когда включена поддержка многобайтных знаков, восьмиричные коды от 0200 до 0377 не являются верными знаками; если вы задаете код из этого промежутка, C-q считает, что вы собираетесь использовать какой-то из наборов знаков ISO Latin-n, и преобразует заданный код к соответствующему коду знаков Emacs. См. Раздел 18.2 [Включение многобайтных

знаков], с. 161. Какой именно набор знаков ISO Latin следует использовать, определяется выбранной вами языковой средой (см. Раздел 18.3 [Языковые  среды], с. 162).

Чтобы использовать вместо восьмиричных  цифр десятичные или шестнадцатиричные, установите переменную read-quoted-char-radix равной 10 или 16. Если основание больше десяти, некоторые буквы, начиная с a, служат частью знакового кода, так же,  как и цифры.

Числовой аргумент для C-q указывает, сколько копий знаков с отмененным особым смыслом необходимо вставить (см. Раздел 4.10 [Аргументы], с. 42).

Информация для настройки: hDELi  в большинстве режимов запускает команду deletebackward-char;  hRETi  запускает команду newline,  а самовставляющиеся печатные знаки запускают команду self-insert, которая вставляет тот знак, который был набран при ее вызове. Некоторые основные режимы перепривязывают hDELк другим командам.

4.2  Изменение положения точки

Чтобы сделать что-то большее, чем просто вставка знаков, вы должны знать, как двигается точка (см.  Раздел 1.1 [Точка], с. 23).  Простейший способ переместить  точку  — воспользоваться курсорными стрелками или щелкнуть левой кнопкой мыши в том месте, куда вы хотите передвинуть точку.

Есть также Controlи Meta-знаки для перемещения курсора. Некоторые из них эквивалентны курсорным стрелкам (они были придуманы в те дни, когда у терминалов еще не было курсорных стрелок, их можно использовать на таких терминалах). Другие делают более сложные  вещи.

C-a            Передвинуться в начало строки (beginning-of-line).

C-e            Передвинуться в конец строки (end-of-line).

C-f              Сдвинуться на один знак вперед (forward-char). C-b            Сдвинуться на один знак назад (backward-char). M-f             Сдвинуться на одно слово вперед (forward-word).

M-b            Сдвинуться на одно слово назад (backward-word).

C-n            Сдвинуться вертикально вниз на одну строку (next-line).  Эта команда старается оставить горизонтальную позицию неизменной, чтобы если вначале вы находились в середине одной строки, то в конце оказались бы в середине следующей. В случае, если вы находитесь на последней строке текста, C-n создает новую строку и передвигается на нее.

C-p            Сдвинуться вертикально вверх на одну строку (previous-line).

M-r             Сдвинуть точку  к левому краю на строку в середине окна  (move-to-windowline). Текст при этом не перемещается по экрану.

Числовой аргумент говорит, на какой строке экрана поместить точку.  Он отсчитывает экранные строки от верха окна (нуль для самой верхней). Отрицательный аргумент отсчитывает строки снизу (?1 для нижней строки).

M-<            Перейти на начало буфера (beginning-of-buffer). При аргументе, равном n, двигает на n/10  от начала.  См.  Раздел 4.10 [Аргументы],  с. 42,  для более подробной информации о числовых аргументах.

M->            Перейти в конец буфера (end-of-buffer).

M-x goto-char

Считывает число n и сдвигает точку к позиции n в буфере.  Позиция 1 — это начало буфера.

M-x goto-line

Считывает число n и сдвигает точку  к строке с номером n.  Строка 1 — это начало буфера.

C-x C-n      Велит использовать текущий столбец, в котором находится точка, в качестве полупостоянного целевого столбца для C-n и C-p (set-goal-column).  В дальнейшем эти команды всегда переходят на этот  столбец в каждой строке,  к которой вы передвигаетесь, или как можно ближе к нему при данном содержимом строки. Этот целевой столбец остается в силе, пока его не отменят.

C-u C-x C-n

Отменить целевой столбец.  В дальнейшем C-n и C-p снова, как обычно, пыта-

ются избежать изменения горизонтальной позиции.

Если вы установите переменную track-eol не равной nil, то если точка находится к конце  строки, C-n и C-p передвигают в конец другой строки.  Обычно track-eol равна nil.   См.  Раздел 31.2 [Переменные],  с. 343, чтобы узнать, как  установить переменные вроде track-eol.

Обычно C-n, вызванная на последней строке буфера, добавляет к буферу новую строку. Если переменная next-line-add-newlines равна nil, то C-n вместо этого выдает ошибку (как C-p на первой строке).

4.3  Стирание текста

hDELi              Удалить знак перед точкой (delete-backward-char).

C-d            Удалить знак после точки (delete-char).

C-k             Уничтожить  все до конца строки (kill-line).

M-d            Уничтожить  все знаки вперед до конца следующего слова (kill-word).

M-hDELi         Уничтожить  все знаки в обратном направлении вплоть до начала предыдущего слова (backward-kill-word).

Вы уже  знаете  о клавише  hDELi,  которая удаляет знак перед точкой  (то  есть перед курсором). Другой ключ, Control-d (C-d для краткости),  удаляет знак после точки (тот знак, на котором курсор). Это сдвигает остальной текст на строке влево. Если вы нажмете C-d в конце строки, то эта строка и следующая за ней соединяются.

Чтобы стереть больший кусок текста, используйте ключ C-k, который удаляет целую строку. Если вы нажмете C-k в начале или в середине строки, то он уничтожает весь текст вплоть до конца этой строки. Если вы наберете C-k в конце строки, то он объединяет эту строку со следующей.

См. Раздел 9.1 [Уничтожение], с. 69, для получения информации о более гибких спосо-

бах уничтожения текста.

4.4  Отмена сделанных изменений

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

C-x u          Отменить одну группу изменений — обычно одну стоящую команду (undo).

C-_            То же самое.

C-u C-x u   Отменить одну группу изменений в области.

Вы делаете отмену с помощью команды C-x u или C-_.  Когда вы впервые даете эту команду, она отменяет  последнее сделанное изменение. Точка возвращается к тому месту, где она была до команды, сделавшей изменение.

Последовательное  повторение C-_ или C-x u отменяет все более  ранние изменения, вплоть до предела доступной информации отмены.  Если все записанные изменения уже были отменены, команда отмены печатает сообщение об ошибке и ничего не делает.

Любая команда, отличная от команды отмены, прерывает последовательность команд отмены.  Начиная с этого момента предыдущие команды отмены рассматриваются  как простые изменения, которые могут быть отменены. Таким образом, чтобы вернуть отмененные вами изменения, наберите C-f  или любую другую команду, которая не причиняя вреда прервет последовательность отмен, а затем снова набирайте команды отмены.

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

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

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

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