Emacs для начинающих

       

Удаление, перемещение и копирование элементов.


Ранее уже обсуждались возможности редактора Emacs по удалению, копированию и перемещению выделенных блоков текста. Аналогичные операцию можно выполнять с элементами SGML.

Чтобы удалить элемент SGML, можно воспользоваться стандартным способом, т.е. выделить блок от открывающего тэга до закрывающего, а затем нажать C-w. Но есть способ лучше. Команда PSGML sgml-kill-element (комбинация C-M-k) удаляет текст внутри элемента начиная с текущей позиции курсора и до закрывающего тэга. Альтернативный вызов команды из меню Modify - пункт Kill element. При использовании команды sgml-kill-element всегда следует помнить о команде отката - undo (C-_).

Если после удаления текста вторично нажать C-M-k, то в окне минибуфера появится сообщение:

No more elements in название_элемента element

Команду sgml-kill-element можно использовать для перемещения текста. Элемент, помещенный данной командой в буфер обмена, может быть потом вставлен в нужное место командой yank (C-y).

Перед тем, как перейти к рассмотрению вопросов, связанных с копированием элементов, обратим внимание на работу двух команд: sgml-untag-element и sgml-kill-markup.

Команда sgml-untag-element (комбинация C-c -) удаляет открывающий и закрывающий тэги текущего элемента. Альтернативный вызов команды через пункт Untag Element меню Modify.

Команда sgml-kill-markup (комбинация C-c C-k или пункт Markup меню Modify) удаляет в буфер фрагмент текста, заключенного между символами "<" и ">". Эта команда полезна для удаления комментариев, которые PSGML вставляет около элементов, если переменной sgml-auto-insert-required-elements присвоено ненулевое значение.

PSGML не имеет встроенной команды для удаления текста от текущей позиции до конца элемента. Данный пробел можно восполнить, добавив следующий макрос в файл .emacs:

(defun sgml-kill-to-eoelement () ; kill to end of element (interactive) (let ((start (point))) (sgml-end-of-element) (kill-region start (point))))

; assign to ^Ck keystrokes (define-key global-map "^Ck" sgml-kill-to-eoelement)



Содержание раздела