Компания 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 >

Vi как проективная система

Виной тому особое умонастроение авторов vi или требования аппаратуры, но в этом редакторе все четыре принципа организации проективных систем соблюдаются безукоризненно.

Предполагается, что процесс редактирования будет проходить в полном соответствии с О и З: "Хорошо подумай, укрепи дух свой и нажми пару клавиш". В отношении О вообще все довольно строго. Например, одноуровневый откат ( u ). В соответствии с О, каждое изменение проекта должно быть обдуманным решением, по сценарию "подумал – сделал – оценил – (возможно) отменил". А для сценария "сделал – сделал – оценил – отменил – отменил – подумал" в проективных системах почти нет места, и в редакторе vi – тоже. Зачастую нажатия полудюжины клавиш достаточно для разительного изменения текста. Это может быть очень удобно, только если пользователь четко понимает, что делает. Примером может служить 1GdGZZ ( ОСТОРОЖНО! Эта команда удаляет весь текст и записывает пустой файл!).

Каким образом соблюдать У в многофункциональной системе – вопрос сложный, однако, на наш взгляд, авторы сделали максимум возможного, чтобы устроить из множества команд подобие пирамиды, о которой говорилось в лекции 2. Показательно "краткое руководство по ex и vi", которое есть во всех BSD-системах (в FreeBSD – /usr/share/doc/usd/12.vi/summary.ascii.gz ): оно содержит 14 разделов, посвященных разным типам команд, в каждом из которых описано не больше дюжины операторов (три раздела совсем короткие). Введение гнездовых команд, командная строка, настройки (о которых речь впереди) – все это нацелено на У (и, разумеется, И: ведь так и учиться легче).

По части З авторы vi весьма пунктуальны, вплоть до экономии на нажатиях клавиш. Например, для замены одного символа другим есть специальная команда r ( r eplace). И действительно, в два раза быстрее набрать, допустим, ra ("заменить на a "), чем c aEsc (результат – тот же). X, как можно догадаться, введено вместо dh. А для последовательности команд :wEnter:qEnter (выход с сохранением) придумано аж два сокращения: во-первых, :xEnter (от exit), а во-вторых, совершенно неожиданное, но очень удобное ZZ (из командного режима, всего две буквы).

Неудивительно, что для оперативных изменений внутри строки было выдумано еще несколько команд перемещения. Во-первых, это 0, ^ и $ – переход на начало строки, на первый неразделитель в строке (туда же, куда и I ) и на конец строки. Во-вторых – команды поиска символа в строке f ( find ) и t ( t o). Эти команды работают только внутри строки и ищут только один символ, но зато сразу, без нажатия на Enter. Команда t останавливается перед найденным символом, а fна нем. Сочетания вроде " ct." (change to ".") очень коротки, а нужны бывают часто. В виде F и T эти команды ведут поиск влево по строке. Наконец, " ; " и " ," выполняют по отношению к ним ту же роль, что n и Nпо отношению к " / ". Если под курсором находится скобка – круглая, квадратная или фигурная, открывающая или закрывающая – команда % переместится на парную ей (учитывая вложенные скобки).

Побочным эффектом такой экономии движений оказывается то, что сокращенными командами действительно можно пользоваться! Достаточно подглядеть в упомянутое "краткое руководство" (оно отлично выглядит, распечатанное в три колонки и сложенное гармошкой) и почувствовать, что новый способ быстрее. Кажется, никто еще не проводил исследования, сколько действий при редактировании текста относятся к содержанию, а сколько – к управлению. Несомненно, vi оказался бы чемпионом краткого управления.

Все гнездовые команды подчиняются правилу двойного удара: команда, состоящая из двух одинаковых символов-действий подряд, применяется к текущей строке. Например, dd удаляет текущую строку, а >> сдвигает ее вправо. Кстати, правило синонимов срабатывает и в гнездовых командах: D и C работают как сокращения от d$ и c$. Экономия движений!

< Лекция 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