EDIT(1) EDIT(1) НАЗВАНИЕ edit - текстовый редактор для случайных пользователей СИНТАКСИС |edit [-r] имя ... ОПИСАНИЕ edit - это вариант текстового редактора ex для новичков и случайных пользователей, которые предпочитают команд- но-ориентированные редакторы. -r Восстановление файла после аварии редактора или системы. Следующее краткое введение поможет освоить работу с ре- дактором edit. Полезно изучить также редактор vi. Чтобы отредактировать содержимое уже существующего фай- ла, следует ввести shell-команду |edit файл При этом создается копия файла, которую затем можно ре- дактировать, а также сообщается, сколько строк и симво- лов в данном файле. Чтобы создать новый файл, нужно ввести команду edit с выбранным именем; будет выдано диагностическое сообщение. Приглашением для ввода команд является символ :, кото- рый появляется сразу после запуска редактора. Если ре- дактируется уже существующий файл, то буфер (так назы- вается редактируемая копия файла) не пуст. Большинство команд редактора работают с текущей строкой, если не указано, о какой именно строке идет речь. Так, если набрана команда print (может быть сокращена до p) и на- жата клавиша возврата каретки (это нужно делать пр вводе всех команд редактора), то будет распечатана те- кущая строка. Если текущая строка удалена командой de- lete (d), то будет распечатана новая текущая строка. В начале редактирования текущей строкой является послед- няя строка файла. Если удалить последнюю строку, то те- кущей становится новая последняя строка. Вообще, после выполнения команды delete, текущей становится следующая строка файла после удаленной. (Удаление последней стро- ки - это особый случай). Если редактируется пустой файл или необходимо добавить несколько строк к уже существующему, следует использ вать команду append (a). После ввода этой команды ре- дактор будет читать строки с терминала, пока не встре- тит строку, состоящую только из символов ".", и помес- тит их после текущей строки. Последняя веденная строка становится текущей. Команда insert (i) похожа на ap pend, но помещает новые строки не после, а до текущей. Строки в буфере нумеруются с единицы. Выполнение коман- ды "1" вызовет печать этой строки. Если удалить первую строку, бывшая строка 2 станет первой и текущей и будет распечатана. Вообще, текущей всегда становится строка, с которой работала последняя команда. Внести изменения в текст в пределах текущей строки мож но, используя команду substitute (s). Команда |s/старые/новые заменяет указанные старые символы на новые. Команда file (f) укажет, каково количество строк в ре- дактируемом буфере, а если он уже изменен, то выдаст сообщение [Modified]. После внесения изменений в буфер его содержимое можно перенести в исходный файл с п мощью команды write (w). Команда quit (q) позволяет выйти из редактора. Если редактор был запущен, а изм нений в текст файла внесено не было, то команду write использовать не обязательно. Если попытаться выйти из редактора после того, как в буфер были внесены измене ния, но не выполнялась команда write, будет получено предупреждение об этом, а редактор будет ждать следую- щей команды. Если содержимое буфера запоминать не нуж но, следует ввести команду quit! (q!). Содержимое буфе- ра теряется и происходит возврат в shell. Используя команды delete и append, а также нумерацию строк в файле, можно вносить в файл необходимые измене- ния. Однако, если редактор приходится использовать дос таточно часто, полезно изучить некоторые дополнительные возможности. Команда change (c) заменяет текущую строку на последо- вательность введенных строк (как и в команде append последней должна быть строка, состоящая только из точ- ки). Эта команда может заменять несколько строк, если указать их номера, например 3,5 change. Таким способом можно также выводить строки. Например команда 1,23 p распечатает первые 23 строки файла. Команда undo (u) отменяет действие предыдущей команды. Так, если была введена команда substitute, которая не дала ожидаемого результата, команда undo восстановит прежнее содержимое строки. Можно затем вернуться к ва рианту до восстановления, снова введя undo. Если вноси- мые изменения затрагивают более чем одну строку буфера, редактор выдаст предупреждение об этом. Если изменения кажутся в чем-то неверными, можно набрать undo и пос мотреть, что произошло, а если окажется, что все было правильно, то, снова набрав undo, можно вернуть этот вариант на экран. Следует помнить, что действие команды undo не распространяется на команды write и quit. Для просмотра следующей строки буфера нужно нажать возврат каретки. Для просмотра нескольких строк следует нажать CTRL+D, после чего на экране терминала они зай- мут его половину, а на телетайпе будет выдано 12 строк. Текст, расположенный около текущей строки, можно прос- матривать с помощью команды z.. В этом случае текущая строка будет последней печатаемой; вернуться к строке, которая была текущей перед вводом команды z., можно, набрав ''. С командой z могут употребляться следующие символы: z- выдает текст на весь экран (или на 24 стро- ки), кончая текущей строкой, z+ выдает последующие строки, также на целый экран. Если необходимо получить меньшее число строк, следует набрать z.12, например, чтобы было выдано всего 12 строк. Такой метод указания числа строк применим для всех команд; так если надо удалить 5 строк начиная с текущей, следует ввести ко манду delete 5. Чтобы найти строку в файле, можно использовать ее но мер, если он известен; однако, при добавлении и удале- нии строк их номера меняются, поэтому такой способ по- иска обычно неприменим. Для поиска цепочек символов нужно использовать команды вида /текст/ для поиска це- почки текст вниз по файлу, и ?текст? для поиска той же цепочки вверх по файлу. Если конец (или начало) файла достигнут, а результатов нет, то поиск продолжится с начала (с конца) файла по направлению к строке, с кото рой поиск начинался. Полезной может быть команда вида /^текст/, которая производит поиск цепочки текст в на чале каждой строки. Команда /текст$/ производит поиск в конце каждой строки. Последний символ ? или / в этих командах может быть опущен. Текущая строка имеет символическое имя ".", обычно ис пользуемое при указании диапазонов строк. Например, ко- манда .,$print выдает все строки, начиная с текущей и кончая последней строкой файла. Чтобы перейти к послед- ней строке файла, следует обращаться к ней по символи- ческому имени $. Так, команда $delete ($d) удаляет пос- леднюю строку файла; при этом не имеет значения, какая строка была в данный момент текущей. Возможны также и арифметические действия со ссылками на строки. Так, строка с адресом $-5 является шестой с конца, а .+20 двадцатой после текущей. Вывести номер текущей строки можно командой .=, что мо- жет понадобиться, если надо переслать или скопировать часть текста внутри файла или между разными файлами. Для этого следует определить номер первой и последней строки текста, который надо переслать или скопировать (например, 10 и 20). Чтобы переслать текст, нужно наб рать команду 10,20delete a, которая удалит эти строки из файла и поместит их в буфер с именем a. Редактор имеет 26 таких буферов с именами от a до z. Эти строки можно затем вернуть, используя команду put a,которая поместит содержимое указанного буфера после текущей строки. Если эти строки нужно переслать или скопировать из одного файла в другой, надо ввести команду edit (e) после запоминания строк, указав далее имя того файла, который нужно теперь редактировать, например edit chap- ter2. Употребив yank вместо delete, можно взять (без удаления) строки для копирования. Если текст, в котором нужно перемещать или копировать строки, находится в од ном файле, то нет нужды использовать именованные буфера (однако при желании можно). Достаточно, например, наб- рать команду 10,20 move $. СМ. ТАКЖЕ bfs(1), ed(1), ex(1), vi(1).