Введение в UNIX

Дегтярев Е.К.

Оглавление

12. Средства редактора EX, дополняющие возможности редактора VI

  
 
   Как уже говорилось, редактор vi тесно связан с редактором
	ex, являясь по сути одним из режимов работы последнего. Поэ-
	тому ряд мощных команд,  реализованных в ex, можно и полезно
	выполнять и из редактора vi.


12.1. Выход из vi в ex

В начало страницы

  
   Для выхода из vi в ex надо нажать клавишу (esc) для пере-
хода в командный режим,  если вы были в режиме текста, а за-
тем нажать клавишу [:] (двоеточие).  Будет напечатана  подс-
казка редактора ex - двоеточие, приглашающая вводить команды
редактора ex.

12.2. Просмотр строк текста

В начало страницы


   Поскольку ex - строчный редактор, вводится понятие номера
строки и понятие текущей строки. Все строки текста занумеро-
ваны натуральными числами,  начиная с единицы.  Знак $ (дол-
лар) означает номер последней строки текста.

   Просмотр части  текста  на  экране  выполняется командой,
состоящей из одного (для просмотра одной  строки)  или  пары
номеров  -  номера  первой  и  номера последней строки части
текста и символа P (print),  который по умолчанию может быть
опущен. 

Например:

   : 1,5p
   program (input, output)
   ......
   ......
   :
   
	или просто :1,5

   Для просмотра всего текста надо ввести:
   
   : 1, $
   
   Чтобы напечатать строки вместе с их номерами, надо в кон-
	це команды просмотра поставить знак # (диез), например:
	
   : 6, $#
   6 include 
   7 .......
   8 .......
   .........
   
   Следует помнить,  что  нумерация строк относительна.  При
удалении одной строки все строки перенумеруются.  После  вы-
полнения  команды  просмотра текущей строкой становится пос-
ледняя просмотренная строка.

12.3. Поиск строк по образцу текста

В начало страницы

   Команда глобального поиска начинается  префиксом  g  (для
глобального  поиска  по всему тексту) и печатает все строки,
содержащие предъявляемый образец, например:

   : g/speed;
   int speed;
   d = speed x time;
   output (speed).
   
   Образец может  быть  любой частью текста и запоминается в
специальном буфере искомого образца, отличном от буфера все-
го  текста.  Если  префикс g не указан,  ищется и печатается
первая найденная строка, начиная от текущей:

   : /speed;
   int speed.

12.4. Подстановка образца текста

В начало страницы


   Подстановка образца   текста   выполняется   командой   s
	(substitute),  в которой указывается искомый образец и заме-
	няющий образец, например:

   : s/eed/ace/
   int space;
   
   Эта команда выполняет замену первого  вхождения  искомого
	образца в текущей строке.

   Для замены всех вхождений в строке надо добавить  флаг  g
	(global - глобальный) в конце команды:

   : s/wine/water/g
   water = water + shugar
   
   Чтобы выполнить подстановки в  нескольких  строках,  надо
	добавить префикс адресации или поиска строк по образцу.
	
	 Например:
	
   : 1,10s/wine/water/g
	или
   : 1, $s/wine/water/g
   
	Примеры поиска по образцу:
	
   : g/speed/s/eed/ace/g
	или
   : g/speed/s//space/g.
   
   В последнем случае искомый образец берется из буфера  ис-
	комого образца.
   Возможен интерактивный режим выполнения глобальной коман-
	ды  подстановки,  при  котором редактор для каждой найденной
	строки перед выполнением подстановки  требует  подтверждения
	ее  необходимости в форме ввода буквы y (yes).  Для интерак-
	тивной  формы  в  команде  требуется  использовать  ключ   c
	(confirmation):
	
   : g/eed/s//ace/gc
   int speed;
         ^^^ y
   real need;
         ^^^
   d = speed x time;
         ^^^ y
   output (speed);
             ^^^ y
   Здесь три замены произведутся, а одна - нет.

12.5. Отмена последней подстановки

В начало страницы

   Отмена последней   подстановки   выполняется  командой  u
(undo). Реализация команды u выполняется обратной подстанов-
кой, поэтому повторная подача команды отменяет первую коман-
ду u.

12.6. Чтение и запись файлов в буфере редактирования

В начало страницы

   Редактируемый файл  находится  в  буфере  редактирования.
	Чтение содержимого другого файла в буфер редактирования пос-
	ле  указанной или текущей строки можно выполнить командой r,
	
	например:
	
   0r preface.
   
   Здесь содержимое файла чтения помещается в начале  буфера
редактирования (после несуществующей нулевой строки).  В ка-
честве файла чтения может быть файл стандартного вывода  ко-
манды, например (пробел перед ! обязателен):

   : r !date
   : 1, $p
   ----------
   Fr Jan  12   09:33   PST   1986
   
   Запись буфера редактирования или его  части  в  указанный
	файл можно выполнить командой w, например:
	
   : w newfile
	или
   : w >> oldfile
   
(добавление в существующий файл).

   Попытка записи буфера в уже существующий файл сопровожда-
	ется  предупреждением  и  приглашением  повторить  команды с
	восклицательным знаком:
	
   : w! oldfile
   
   Если имя опущено, подразумевается редактируемый файл.

   Пример записи части буфера редактирования:
 
   : 1, 100w !lpr.
   
   Здесь роль файла записи играет стандартный вывод  команды
	(пробел перед знаком ! обязателен).

12.7. Вызов на редактирование следующего или нового файла

В начало страницы

   Если редактор  был  вызван  для редактирования нескольких
	файлов, например:
	
   $ vi .*,
	или
   $ ex *.c,
   
	то переход к редактированию следующего файла выполняется ко-
	мандой n (next):
	
   : n
   
   Командой e  (edit) можно вызвать на редактирование произ-
	вольный файл, указанный именем
	
   : e another
   
   Если в момент подачи команд n или e буфер  редактирования
предыдущего  файла не был записан,  выдается предупреждение,
которое можно обойти,  форсировав выполнение команд  подачей
восклицательного знака : n! и : e! соответственно.

12.8. Выполнение команды системы внутри редактора ex

В начало страницы

   Для этого используется префикс !  (восклицательный знак),
   
	например:
	
   : !cc % ,
где % - ссылка на имя текущего редактируемого файла.

   Два восклицательных знака:
   
   : !!
	повторяют предыдущую команду.

12.9. Переход в режим редактора vi

В начало страницы

   Выполняется командой vi, которой может предшествовать но-
	мер строки, высвечиваемой в начале экрана, например:
	
   : 10 vi
   
   В режиме vi доступны все средства редактора. Выход из ре-
	жима vi выполняется подачей команды Q (большое).

12.10. Выход из редактора ex

В начало страницы

   Выход из редактора ex в режим команд системы  выполняется
	командой q, например:
	
   : q
   
   Если буфер  редактирования  не был записан или еще не все
	файлы отредактированы, выдается предупреждение, которое мож-
	но обойти, подавая q с восклицательным знаком:
	
   : q!
   
   Команду выхода  можно для удобства комбинировать с коман-
	дой записи, например:
	
   : wq
	или
   : wq!
если есть препятствия для записи или выхода.

В начало страницы


<<< Оглавление Страница: 12   >>>