Online Documentation Server
 ПОИСК
ods.com.ua Web
 КАТЕГОРИИ
Home
Programming
Net technology
Unixes
Security
RFC, HOWTO
Web technology
Data bases
Other docs

 

 ПОДПИСКА

 О КОПИРАЙТАХ
Вся предоставленная на этом сервере информация собрана нами из разных источников. Если Вам кажется, что публикация каких-то документов нарушает чьи-либо авторские права, сообщите нам об этом.




Previous | Содержание | Next

ВВЕДЕНИЕ В 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 <stdio.h>
   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!

если есть препятствия для записи или выхода.

Previous | Содержание | Next



With any suggestions or questions please feel free to contact us