6. РЕДАКТОРЫ EX И VI

Это комбинация двух непересекающихся возможностей: ex -

строчный редактор (расширение базового редактора ed); vi -

экранный редактор (может выполнять также все команды редак-

тора ex).

 

6.1. Вызов vi

а) $ vi myfile (одно или несколько имен файлов через про-

белы для последовательного вызова их на редактирование).

Если такого файла нет, то появится начало пустого файла;

курсор - в начале первой строки.

б) $ vi + myfile

На экране - конец файла; курсор - в начале последней

строки.

в) $ vi +10 myfile

На экране - часть файла и строка 10 - в центре экрана;

курсор - в начале этой строки.

 

6.2. Выход из vi

а) Если вы хотите запомнить изменения:

 

Esc : w q ! Enter

(нажать на клавишу Esc, ввести двоеточие - оно появится

в нижней части экрана, ввести символы w, q и восклицательный

знак, нажать на клавишу Enter).

 

 

- 28 -

б) Если нет:

 

Esc : q ! Enter

 

6.3. Позиционирование курсора

а) клавиши <-,,,->;

б) H - home, M - middle, L - last: начало, середина, ко-

нец экрана;

в) w - вперед на начало следующего слова; e - на конец

текущего слова; b - назад на начало слова.

 

6.4. Добавление, изменение и уничтожение текста

Подвести курсор к нужной позиции и нажать одну из ниже

указанных клавиш.

Уничтожение

x - уничтожить текущую букву (где курсор), текст сдвига-

ется на ее место.

Изменение (замена):

r - замена текущей буквы; rv - замена на v.

s - замена одной или нескольких букв текстом; например,

3stest - замена трех букв строкой 'test'.

Добавление:

i - вставить произвольный текст перед курсором. Конец

ввода текста - клавиша Esc;

a - добавить произвольный текст после курсора. Конец вво-

да текста - клавиша Esc.

 

 

 

- 29 -

6.5. Операции над словами и строками

Уничтожение слова (слов):

- подвести курсор к началу слова и нажать:

dw (delete word);

2dw - 2 слова;

ndw - n слов (n - число).

Изменение слова:

- подвести курсор к началу слова и печатать:

cw < слово > Esc

2cw <два слова> Esc

и т.д.

Уничтожение части строки

d$ - от текущего символа до конца строки (текущий символ

исчезает - то же делает D);

d^ - от начала строки до текущего символа (текущий символ

остается).

Замена части строки (аналогична)

c$ (или C) <текст замены (может быть из нескольких

строк)> Esc - замена конца строки (от курсора);

c^ <текст замены> Esc - замена начала строки (до курсора,

не включая его). ;

 

 

Уничтожение целой строки

dd - уничтожение одной строки;

10dd - уничтожение 10 строк.

Замена целой строки

cc < текст > Esc - замена одной строки;

5cc < текст > Esc - замена пяти строк.

 

 

- 30 -

Создание новой строки

о - пустая строка после текущей строки;

O - пустая строка перед текущей строкой.

Ввод до и после текущей строки:

^i (или I) - до;

$a (или A) - после.

 

6.6. Перестановка части текста (cut-paste)

Часть текста сохраняется в буфере редактора, затем встав-

ляется в другое место или в несколько мест (если вставка

повторяется). Буфера могут быть именованными и один - ано-

нимный. При выполнении команд ndd (где n - число) удаляемые

n строк попадают на некоторое время в неименованный буфер.

Содержание буфера можно вставить:

- после текущей строчки командой p (put);

- перед текущей строчкой командой P (Put).

Следует помнить, что в анонимном буфере хранится послед-

ний уничтоженный текст, предыдущие - безвозвратно теряются!

(команды с (change) - тоже уничтожают буфер).

 

6.7. Сохранение части текста для последующего

использования (yank)

yw - сохранить слово (курсор - в начале слова);

yy (или Y) - сохранить одну строку ;

5yy (или 5Y) - сохранить 5 строк;

и т.п. (в анонимном буфере).

 

 

- 31 -

Именованные буфера имеют имена из одной буквы от a до z;

доступ к буферу - по имени имеет вид "x, где x - имя буфера.

Запись в буфер a

"a3yy - сохранить 3 строки в буфере a (с начала буфера).

Вставка текста из анонимного буфера (как обычно):

- p - после текущей строки;

- P - перед ней.

Вставка текста из именованного буфера:

- "ap - после текущей строки из буфера a;

- "aP - перед ней из буфера a.

Добавление в буфер:

- "aAdd - добавить к a уничтоженную по dd текущую строку.