Режим редактирования emacs

Режим редактирования emacs применяется встроенными редакторами emacs и gmacs. Единственное различие между этими встроенными редакторами заключается в способе обработки клавиш Ctrl-T.

Для редактирования строки нужно поместить курсор в нужную позицию и вставить или удалить требуемые символы или слова. Все команды редактирования представляют собой управляющие символы или escape-последовательности.

Команды редактирования действуют в любой позиции курсора (не только в начале строки). Если не указано иное, после ввода команды не нужно нажимать ни клавишу Enter, ни клавишу перевода строки (стрелку вниз).


Флаг Описание
Ctrl-F Перемещает курсор на один символ вперед (вправо).
Esc-F Перемещает курсор на одно слово вперед. Словом считается произвольная последовательность символов, в которую входят только буквы, цифры и знаки подчеркивания.
Ctrl-B Перемещает курсор на один символ назад (влево).
Esc-B Перемещает курсор на одно слово назад.
Ctrl-A Перемещает курсор в начало строки.
Ctrl-E Перемещает курсор в конец строки.
Ctrl-] c Перемещает курсор на указанный символ в текущей строке.
Esc-Ctrl-] c Перемещает курсор назад до указанного символа в текущей строке.
Ctrl-X Ctrl-X Меняет местами символы в помеченной позиции и в текущей позиции курсора.
ERASE Удаляет предыдущий символ. (Пользовательский символ удаления, заданный с помощью команды stty; как правило соответствует клавишам Ctrl-H.)
Ctrl-D Удаляет текущий символ.
Esc-D Удаляет текущее слово.
Esc-Backspace Удаляет предыдущее слово.
Esc-H Удаляет предыдущее слово.
Esc-Delete Удаляет предыдущее слово. Если символ прерывания вводится при нажатии клавиши Delete, то эта команда работать не будет.
Ctrl-T Меняет местами текущий и следующий символы в режиме emacs. Меняет местами два предыдущих символа в режиме gmacs.
Ctrl-C Если текущий символ - строчная буква, заменяет его на соответствующую прописную букву.
Esc-C Заменяет в текущем слове все строчные буквы на прописные.
Esc-L Заменяет в текущем слове все прописные буквы на строчные.
Ctrl-K Удаляет все символы с текущей позиции курсора до конца строки. Если перед этой командой будет указано число, не превышающее текущую позицию курсора, то будут удалены все символы, начиная с указанной позиции и вплоть до позиции курсора. Если перед этой командой будет указано число, превышающее текущую позицию курсора, то будут удалены все символы, начиная с текущей и заканчивая заданной позицией курсора.
Ctrl-W Удаляет символы с текущей позиции курсора до метки.
Esc-P Заносит в стек символы с текущей позиции курсора до метки.
KILL Пользовательский символ KILL, определенный с помощью команды stty; как правило, соответствует клавишам Ctrl-G или символу @. Удаляет текущую строку. Если будет последовательно указано несколько символов KILL, то все символы KILL, кроме первого, будут заменены на символы новой строки (эту функцию удобно применять при работе с печатающими устройствами).
Ctrl-Y Восстанавливает последний символ или слово, удаленные из строки. (Возвращает удаленное.)
Ctrl-L Вводит символ новой строки и выдает текущую строку.
Ctrl-@ (Пустой символ) Маркирует текущую позицию.
Esc-пробел Маркирует текущую позицию.
Ctrl-J (Символ новой строки) Выполняет текущую строку.
Ctrl-M (Возврат каретки) Выполняет текущую строку.
EOF Символ конца файла (обычно соответствует клавишам Ctrl-D) интерпретируется как конец файла только в случае, если текущая строка пустая.
Ctrl-P Выдает предыдущую строку списка хронологии (предыдущую команду). Последовательно нажимая клавиши Ctrl-P, можно пролистать список хронологии назад до нужной команды. Команды, состоящие из нескольких строк, выдаются по одной строке за одно нажатие клавиш Ctrl-P.
Esc-< Выдает первую строку списка хронологии (первую из сохраненных команд).
Esc-> Выдает последнюю строку списка хронологии (последнюю выполненную команду).
Ctrl-N Выдает следующую строку списка хронологии. Последовательно нажимая клавиши Ctrl-N, можно пролистать список хронологии вперед до нужной команды.
Ctrl-R строка Просматривает файл хронологии от текущей позиции к началу и пытается найти строку, в которой содержится указанная подстрока. Если будет указано значение 0, то поиск будет выполнен по направлению к концу файла. Подстрока должна заканчиваться символом Enter или символом новой строки. Если перед строкой будет указан символ (^), то искомая строка должна начинаться с указанной подстроки. Если параметр подстрока не будет указан, то будет найдена следующая строка с последней указанной подстрокой. В этом случае значение 0 изменяет направление поиска.
Ctrl-O Выполняет текущую строку и выдает следующую строку из файла хронологии.
Esc цифры Задает числовой параметр. Указанные цифры будут переданы в качестве параметра в следующую команду. Числовые параметры допустимы для следующих команд: Ctrl-F, Ctrl-B, ERASE, Ctrl-C, Ctrl-D, Ctrl-K, Ctrl-R, Ctrl-P, Ctrl-N, Ctrl-], Esc-., Esc-Ctrl-], Esc-_, Esc-B, Esc-C, Esc-D, Esc-F, Esc-H, Esc-L и Esc-Ctrl-H.
Esc буква Пытается найти псевдоним _буква в списке псевдонимов. Если такой псевдоним определен, то в очередь ввода будет помещено его значение. Параметр буква не должен соответствовать ни одной из escape-функций.
Esc-[ буква Пытается найти псевдоним __буква (два знака подчеркивания и указанная буква) в списке псевдонимов. Если такой псевдоним определен, то в очередь ввода будет помещено его значение. В большинстве терминалов эту команду можно применять для программирования функциональных клавиш.
Esc-. Вставляет в текущую строку последнее слово из предыдущей команды. Если перед этой командой будет задан параметр-число, то будет вставлено слово с указанным номером.
Esc-_ Равносильна команде Esc-. .
Esc-* Выполняет подстановку имен файлов для текущего слова. Если слово не соответствует ни одному файлу или содержит специальные символы шаблона, то к нему будет добавлена звездочка (*).
Esc-Esc Дополнение имени файла. Находит все файлы, соответствующие маске, полученной путем добавления звездочки к текущему слову. Выдает общий префикс имен этих файлов. Если маске соответствует только один объект, то к его имени добавляется либо символ /, если это каталог, либо пробел, если это файл.
Esc-= Выдает список файлов, соответствующих маске, полученной путем добавления звездочки (*) к текущему слову.
Ctrl-U Умножает параметр следующей команды на 4.
\ Игнорирует следующий специальный символ, считая его обычным символом. С помощью этой функции можно ввести в командной строке или в строке поиска такие символы, как ERASE, KILL и INTERRUPT (обычно соответствует клавише Delete), а также символы, соответствующие функциям редактирования \). Обратная косая черта аннулируют функции редактирования следующего введенного символа.
Ctrl-V Показывает версию оболочки.
Esc-# Вставляет символ # в начало строки и выполняет текущую строку. Эта функция позволяет вставить комментарий в файл хронологии.