[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]

Руководство пользователя: Операционная система и устройства


Встроенный редактор оболочки Korn (POSIX)

Обычно пользователь вводит команды с клавиатуры терминала и завершает их символами новой строки (RETURN или LINE FEED). Если вы включите опцию встроенного редактора emacs, gmacs или vi, то сможете пользоваться функциями редактирования командной строки.

Для того чтобы включить встроенный редактор, нужно выполнить одну из следующих команд:

set -o emacs Включает Режим редактирования emacs и встроенный редактор, имитирующий emacs.
set -o gmacs Включает Режим редактирования emacs и встроенный редактор, имитирующий gmacs.
set -ovi Включает Режим редактирования vi и встроенный редактор, имитирующий vi.

Опция редактирования автоматически выбирается всякий раз, когда переменной VISUAL или EDITOR присваивается значение, заканчивающееся на имя любой из этих опций.

Примечание: Для работы со встроенным редактором ваш терминал должен интерпретировать символ RETURN как символ возврата каретки без символа новой строки. Пробел должен заменять символ в текущей позиции курсора.

При переходе в режим редактирования открывается новое окно в текущей строке. Ширина этого окна равна значению переменной COLUMNS, если она определена, или 80 символам. Если длина строки превышает ширину окна за вычетом двух символов, то в конце строки будет показан специальный маркер, указывающий, что строка поместилась на экране не полностью. Когда курсор будет достигать границы экрана, окно будет центрироваться относительно текущей позиции курсора. Применяются следующие маркеры:

> Указывает, что строка показана не до конца.
< Указывает, что строка показана не с начала.
* Указывает, что строка показана не с начала и не до конца.

Действие команд поиска в обоих режимах редактирования распространяется на все содержимое файла хронологии Korn. Поиск выполняется по строкам. Если перед искомым значением указан символ ^ , то будут найдены только строки, начинающиеся с этого значения.

В этом разделе приведена информация по следующим темам:

Режим редактирования 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; как правило, соответствует клавишам или символу @ . Удаляет текущую строку. Если будет последовательно указано несколько символов 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-# Вставляет символ # в начало строки и выполняет текущую строку. Эта функция позволяет вставить комментарий в файл хронологии.

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

В режиме редактирования vi предусмотрено два состояния командной строки: режим ввода текста и режим управления. Для перехода в режим управления нужно нажать клавишу Esc.

Перед большинством команд можно указывать необязательный параметр число. В большинстве систем в режиме редактирования vi действуют стандартные правила обработки. Эхо-повтор команды выдается в случае, если выполнены следующие условия:

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

Команды редактирования vi можно разбить на следующие категории:

Ввод текста

Примечание: По умолчанию редактор находится в режиме ввода текста.

ERASE (Пользовательский символ Erase, определенный с помощью команды stty; обычно соответствует клавише Ctrl-H или #.) Удаляет предыдущий символ.
Ctrl-W Удаляет предыдущее слово (все символы правее последнего пробела).
Ctrl-D Завершает работу оболочки.
Ctrl-V Игнорирует следующий специальный символ, считая его обычным символом. С помощью этой функции можно ввести в командной строке или в строке поиска символы редактирования, например, ERASE или KILL. Клавиши Ctrl-V аннулируют функции редактирования следующего введенного символа.
\ Игнорирует следующий специальный символ ERASE или KILL.

Команды перемещения курсора

С помощью следующих команд можно перемещать курсор по тексту:

[число]l Перемещает курсор на один символ вперед (вправо).
[число]w Перемещает курсор на одно слово вправо (слово - последовательность символов, в которую входят только буквы и цифры).
[число]W Перемещает курсор на начало следующего "длинного слова" (первый символ за следующим пробелом).
[число]e Перемещает курсор в конец текущего слова.
[число]E Перемещает курсор в конец текущего "длинного слова" (последний символ перед следующим пробелом).
[число]h Перемещает курсор на один символ назад (влево).
[число]b Перемещает курсор на одно слово назад.
[число]B Перемещает курсор в начало текущего "длинного слова" (первый символ после предыдущего пробела).
[число]| Перемещает курсор в столбец, указанный параметром число. Если число не задано, то перемещает курсор в первый столбец.
[число]fc Находит следующее вхождение символа c в текущей строке.
[число]Fc Находит предыдущее вхождение символа c в текущей строке.
[число]tc Равносильна командам f h.
[число]Tc Равносильная командам F l.
[число]; Повторяет последнюю команду поиска символа - f, F, t или T - число раз.
[число], Повторяет в обратном направлении последнюю команду поиска символа - f, F, t или T - число раз.
0 Перемещает курсор в начало строки.
^ Перемещает курсор на первый символ строки, отличный от пробела.
$ Перемещает курсор в конец строки.

Команды поиска текста

Команды поиска текста позволяют работать со всем содержимым файла хронологии:

[число]k Выдает предыдущую строку списка хронологии (предыдущую команду).
[число]- Равносильна команде k.
[число]j Выдает следующую команду. С помощью клавиши j можно последовательно пролистать содержимое файла хронологии до нужной строки.
[число]+ Равносильна команде j.
[число]G Выдает команду, номер которой задан параметром число. По умолчанию выдается последняя выполненная команда.
/строка Выдает последнюю команду, в которой содержалась указанная строка. Искомая строка должна быть завершена символом RETURN или символом новой строки. Если перед строкой будет указан символ ^ , то искомая строка должна начинаться с указанной подстроки. Если в этой команде строка не указана, то будет выполнен повторный поиск последней указанной строки.
?строка То же, что /строка, только поиск выполняется в направлении к концу файла хронологии.
n Находит следующее вхождение шаблона, указанного в команде /строка или ? строка.
N Находит следующее вхождение шаблона, указанного в команде /строка или ? , но в обратном порядке. Выполняется поиск строки, указанной в последней команде /строка.

Команды изменения текста

Эти команды позволяют изменять текст в командной строке:

a Включает режим ввода текста; текст будет вводиться справа от текущего символа.
A Включает режим ввода текста; текст будет вводиться в конце строки. Равносильна команде $a.
[число]cMotion  
c[число]команда Удаляет символы, начиная с текущего, и до символа, на который будет перемещен курсор с помощью команды (исключая этот символ), а затем переходит в режим ввода текста. Если значение параметра команда - c, то будет удалена вся строка.
C Удаляет символы, начиная с текущего, и до конца строки, а затем переходит в режим ввода текста. Равносильна команде c$.
S Равносильная команде cc.
D Удаляет символы, начиная с текущего, и до конца строки. Равносильна команде d$.

[число]dMotion

d[число]команда Удаляет все символы, начиная с текущего, и до символа, на который будет перемещен курсор с помощью параметра команда (включая этот символ). Если значение параметра команда - d, то будет удалена вся строка.
i Включает режим ввода текста; текст будет вводиться перед текущим символом.
I Включает режим ввода текста; текст будет вводиться в начале строки. Равносильна команде 0i.
[число]P Вставляет перед текущим символом текст, полученный в результате выполнения последней команды изменения текста.
[число]p Вставляет после текущего символа текст, полученный в результате выполнения последней команды изменения текста.
R Переходит в режим ввода текста; вводимый текст будет заменять текущее содержимое строки.
[число]rc Заменяет число символов, начиная с текущей позиции курсора, на символ c. После замены курсор перемещается вправо за последний замененный символ.
[число]x Удаляет текущий символ.
[число]X Удаляет предыдущий символ.
[число]. Повторяет предыдущую команду изменения текста.
[число]~ Заменяет строчные буквы на прописные, а прописные - на строчные. Замена выполняется для указанного числа символов, начиная с текущей позиции курсора.
[число]_ Добавляет слово, указанное в параметре число предыдущей команды, и переходит в режим ввода текста. Если параметр число не указан, то добавляется последнее указанное слово.
* Добавляет символ * к текущему слову и пытается выполнить подстановку имен файлов. Если подстановка невозможна (ни одно имя файла не соответствует указанному шаблону), то будет выдан звуковой сигнал. В противном случае текущее слово будет заменено на список файлов, соответствующих шаблону, и будет включен режим ввода текста.
\ Дополнение имени файла. Добавляет звездочку к текущему слову и находит все файлы, соответствующие полученному шаблону. После этого текущее слово заменяется на максимальный общий префикс имен найденных файлов. Если маске соответствует только один объект, к его имени добавляется символ /, если это каталог. Если файл не является каталогом, к его имени добавляется пробел.

Прочие команды редактирования

Ниже перечислены команды, не относящиеся ни к одной из перечисленных выше групп:

[число]yMotion  
y[число]команда Копирует в буфер удаления все символы, начиная с текущего, и до символа, на который будет перемещен курсор в результате выполнения команды команда. Текст и позиция курсора не изменяются.
Y Копирует в буфер обмена все символы с текущей позиции курсора до конца строки. Равносильна команде y$.
u Отменяет последнюю команду изменения текста.
U Отменяет все команды изменения текста, выполненные в текущей строке.
[число]v Выдает команду fc -e ${VISUAL:-${EDITOR:-vi}} число в буфер ввода. Если параметр число не указан, то редактор будет вызван для текущей строки.
Ctrl-L Вводит символ новой строки и выдает текущую строку. Эта команда работает только в режиме управления.
Ctrl-J (Новая строка) Выполняет текущую строку. Эта команда действует во всех режимах.
Ctrl-M (Возврат каретки) Выполняет текущую строку. Эта команда действует во всех режимах.
# Добавляет в начало текущей строки символ # и выдает полученную строку. С помощью этой команды можно добавить текущую строку в файл хронологии, не выполняя ее.

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

= Показывает список файлов, соответствующих шаблону, полученному путем добавления звездочки к текущему слову.
@буква Пытается найти псевдоним _буква. Если такой псевдоним определен, то в очередь ввода будет помещено его значение.


[ Страница назад | Страница вперед | Содержание | Индекс | Домой | Юридическая информация | Поиск ]