Компания ALT Linux
Опубликован: 14.12.2004 | Доступ: свободный | Студентов: 12240 / 1446 | Оценка: 4.19 / 3.84 | Длительность: 18:18:00
ISBN: 978-5-9556-0019-1
Лекция 15:

Текстовый редактор Vi

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >

Проблема управляющего ввода

Однако даже с помощью curses не восполнить бедности управляющего ввода. Управляющий ввод – это такое взаимодействие человека и машины, когда человек командует ею, а не просто передает данные (скажем, текст ). И если практически вся клавиатура предназначена для ввода данных, то как с ее же помощью передавать команды?

Можно считать (с некоторой натяжкой, кстати), что на клавиатуре терминала есть клавиши со стрелками. На многих терминалах имеются функциональные клавиши, помеченные F1, F2 и т. д.. Часто встречаются терминалы с клавишами Page Up и Page Down. Всего этого явно недостаточно для того, чтобы редактирование было удобным и быстрым. Нужно или искать компромисс, или выдумывать концепцию Управляющего ввода, не использующую понятие управляющих клавиш.

Компромисс может быть достигнут тремя способами. Можно ориентироваться на какой-нибудь определенный терминал (или даже самостоятельно его изготовить), на котором будут все нужные управляющие клавиши. При этом редактор немедленно перестает быть универсальным и исчезает вместе с терминалом. Можно понадеяться на F1, F2 и т. д., поскольку, если они есть, то уж в количестве не менее восьми штук. Каждой функциональной клавише приписывается несколько функций редактирования, и пользователь старательно их запоминает. Нам доводилось встречать изготовленные типографским способом бумажки с названиями этих функций, которые следовало наклеивать на клавиатуру, тем самым сводя задачу к предыдущей. Еще курьезнее были терминалы с программируемыми надписями над функциональными клавишами: на такой терминал можно было вывести управляющую последовательность, и надпись над F2 менялась, скажем, на Save!

Третий вариант – использовать в качестве управляющих непечатные символы (из тех, что добываются при помощи клавиши Ctrl ) и основанные на них последовательности. Сам по себе этот третий вариант не лишен смысла, потому что таким образом можно вернуть совсем уж было утерянный принцип аббревиативности. Верно, так и рассуждали те, кто дал клавиатурному модификатору такое имя – Control, то есть "Управление". Все бы ничего, но многие команды приходится вводить одной рукой: другая удерживает Ctrl!

Клавиатурные модификаторы используются популярной в UNIX-сообществе интегрированной средой редактирования GNU Emacs. Emacs – сложное и очень многофункциональное сочетание текстового редактора и всего остального, что может понадобиться пользователю (в особенности – программисту): от файловой оболочки до почтового клиента. В Emacs предполагается, что кроме клавиатурного модификатора Ctrl есть еще один – Meta (такие терминалы и в самом деле встречаются). Нажатие на Ctrl оставляет от кода символа первые пять битов, так что ^A – это символ с ascii-кодом 1, а нажатие на Meta, наоборот, добавляет к коду символа знаковый бит, так что Meta+a – это символ с кодом 225. К сожалению, в неамериканской кодировке такие символы вполне могут означать букву, а не быть управляющими. Например, в кодировке KOI8-R 225 соответствует русское прописное А.

Самые нужные команды – односимвольные, они состоят из нажатия Ctrl или Meta вместе с каким-нибудь символом. В них уже можно соблюсти принцип аббревиативности: для перемещения курсора (если не вспоминать о "стрелках") служат клавиши ^B, ^F, ^P и ^N – от b ackward char, f orward char, p revious line и n ext line соответственно, а перемещение по словам осуществляется при помощи Meta и тех же f и b.

Если Meta нет – не беда, вместо него можно использовать ESC, тогда команды удлинятся на одно нажатие. Большая часть команд Emacs – многосимвольные, начинаются они со специальных Ctrl-клавиш (самая частая – ^X ), после которых можно набирать что угодно – это будет управляющая последовательность. Чем реже команда требуется, тем она длиннее, это помогает соблюсти З. В составных командах тоже можно соблюдать аббревиативность, можно попробовать навести некоторую систему: какой тип команд начинается на Ctrl, какой – на Meta, а какой – на ^X.

Однако стройной системы в Emacs не получилось – прежде всего, по вине его главного достоинства: Emacs – легко расширяемый редактор. Дело в том, что весь редактор написан на диалекте LISP – одного из самых старых и самых теоретически продуманных языков программирования. LISPинтерпретатор, и вдобавок – язык высокого уровня, реализующий концепцию функционального программирования. Это, между прочим, означает, что дополнения к Emacs будут строго следовать З: максимум интеллектуальной работы, при небольшой длине текста. Поэтому каждый член Emacs-сообщества, скорее всего, уже немножко автор Emacs. Пословица о семи няньках к Emacs, к счастью, неприменима, но даже в списке основных авторов стоит 165 фамилий. Подробно о LISP и Emacs рассказано в [2] и [36].

< Лекция 14 || Лекция 15: 12345 || Лекция 16 >
Andranik Avakian
Andranik Avakian

41. УК РФ и Комментарии (ст. 273)

М. 2000 г. Издательство: ALT Linux, Институт Логики

Уголовный Кодекс РФ и комментарии к нему?

По ссылке открывается сайт документации Linux, раздел Linux Installation and Getting Started

Сергей Петровский
Сергей Петровский

У Вас написано:

ls -dt1 `grep -il отчет *` | head -1

если знания по шелу мне не изменяют, то должно быть:

ls -dt | `grep -il отчет *` | head -1