Раздел 3

ВВЕДЕНИЕ В vi

Обзор

Редакторы могут быть строко-ориентированными, как например ed и ex, или экранно-ориентированными, как редактор vi.

vi - стандартный полноэкранный редактор ОС UNIX. Он работает на многих терминалах и имеет все возможности экранно-ориентированного редактора (управление курсором и прочее). Команды vi легко запоминаются мнемонически. Однако, vi - это не текстовой процессор.

Размер редактируемого с помощью vi файла ограничен из-за главного буфера vi и зависит от типа компьютера и используемой версии операционной системы UNIX. Стандартные ограничения (для компьютеров типа 3В) таковы:

Длина строки: максимум 1023 символа

Размер файла: примерно 225,000 символов

ЦЕЛИ

  1. Вызывать редактор vi.
  2. Различать командный режим и режим ввода текста.
  3. Перемещать курсор в файле.
  4. Выводить на экран содержимое буфера.
  5. Добавлять и уничтожать текст.
  6. Записывать и выходить с помощью ZZ.
  7. 7. Искать в файле по образцу текста.(/ или ?)
  8. Заменять строку или знак.
  9. Заменять текст.(r или cw)
  10. Разбивать строку с помощью r.
  11. 1Копировать текст с помощью команд yank и put.
  12. Перемещать текст с помощью команд delete и put.
  13. Перемещать символы с помощью команды xp.
  14. Записывать командой :w.
  15. Записывать и выходить командой :wq.
  16. Выходить командой :q или :q!.
  17. Заменять в файле командой :s.
  18. Глобально изменять файл командой g.
  19. Вызывать на редактирование второй файл, не выходя из редактора, командой :e.
  20. Выводить на экран нумерацию строк командой :set nu.

Введение в vi

Цели

  1. Вызывать редактор vi.
  2. Различать командный режим и режим ввода текста.
  3. Позицонировать курсор в файле.
  4. Выводить на экран содержимое буфера.
  5. Добавлять и уничтожать текст.
  6. Записывать и выходить с помощью ZZ.

Редактор vi

Редактор vi не редактирует реальный дисковый файл. Вместо этого он создает буфера и в них работает. Главный буфер содержит копию файла и все изменения, сделанные во время редактирования. На экране во время редактирования вы видите этот буфер.

Создание нового файла

Перед тем как войти в редактор vi, установите переменную TERM для вашего терминала. Эта переменная обозначает тип используемого вами терминала; она контролирует позиционирование курсора и устанавливает другие атрибуты терминала. Вы можете установить TERM, набрав, например, TERM=vt100; export TERM. Вы узнаете больше об этой переменной во втором уроке шестого раздела.

ЗАМЕЧАНИЕ: Если система запрашивает тип терминала в начале сеанса, то вам не нужно будет устанавливать вторично значение TERM.

Для входа в редактор наберите vi и имя файла, который вы хотите редактировать или создать.

vi создает главный буфер и на экране появляется имя файла.

Курсор располагается в первой строке буфера. В зависимости от терминала, курсор может быть представлен полоской под его текущей позицией или прямоугольником, покрывающим ее.

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

Скорость передачи информации вашего терминала определяет количество строк одного окна, в котором вы можете редактировать. Обычно в окне 23 редактируемых строки. Двадцать четвертая строка резервируется для сообщений vi.

Сообщение в нижней строке содержит имя нового файла и слова "[New File]" (Новый файл) или "No such file or directory" (Нет такого файла или каталога) - в зависимости от версии vi.

СОЗДАНИЕ НОВОГО ФАЙЛА

ПРИМЕР 1: Создание нового файла с именем first.file в директории unit3:

$ cd unit3<RET>

$ vi first.file<RET>

[]






"first.file" [New file]

Режимы редактора vi

Работа с редактором vi производится в двух режимах: командном режиме и режиме ввода текста.

Командный режим

Войдя в редактор, вы оказываетесь в командном режиме, где вы можете вводить команды vi. Например, вы можете позиционировать курсор по буферу, удалять текст и переходить в режим ввода текста.

Командный режим отличен от работы с shell, потому что:

Большинство команд vi НЕ ПОЯВЛЯЕТСЯ на экране.

Большинство команд vi НЕ ЗАКАНЧИВАЕТСЯ нажатием клавиши <RET>.

Для отмены частично набранной команды пользуйтесь клавишей <ESC>. Если вы введете неправильную команду, то вы получите какой-нибудь сигнал, зависящий от терминала, например, звуковой.

Режим ввода текста

Если вы вошли в режим ввода текста, то все, что вы набираете появляется в буфере, и вы видите это на экране.

РЕЖИМЫ РЕДАКТОРА vi

Командный режим: здесь вы вводите команды vi

большинство команд vi не появляется на экране
большинство команд
vi не заканчивается нажатием клавиши <RET>
отмена частично набранной команды - клавиша <ESC>
при вводе неверной команды звуковой или световой сигнал

Режим ввода текста: все, что вы набираете, появляется в главном буфере

≈ набираемые вами символы появляются на экране

Добавление нового текста

Переход из командного режима в режим ввода и добавления текста производится в три шага.

Шаг 1
Чтобы перейти в режим ввода текста, наберите букву
а, но НЕ НАЖИМАЙТЕ <RET>. И хотя буква а не появляется на экране, вы уже находитесь в режиме ввода. В зависимости от типа терминала, курсор может сдвинуться на одну позицию вправо. ЗАМЕЧАНИЕ: В этом курсе, ваш преподаватель устанавливает для терминала опцию ":set showmode", и слова: Input Mode (режим ввода) или Append (добавление) появляются в правом нижнем углу экрана. Подробнее об этой опции в третьем уроке раздела.

Шаг 2
Наберите новый текст, который будет появляться на экране. Курсор продвигается вперед при наборе каждого символа. Клавиша возврата
<BACKSPACE> возвращает курсор на одну позицию влево (курсор остается в этой же строке). Но она не стирает символ, набранный последним, пока вы не наберете новый символ вместо него или не нажмете <ESC>.

Шаг 3
Для возвращения в командный режим нажмите
<ESC>. Курсор передвигается на шаг назад и останавливается на символе, введенном последним. Это способ убедиться в том, что вы вернулись в командный режим.

ДОБАВЛЕНИЕ НОВОГО ТЕКСТА

ПРИМЕР 1: Введите текст в новый файл first.file. Напечатайте указанные ниже строки (нажимая <RET> только в указанных местах).

aЭто мой первый файл.<RET>

Я не собираюсь набирать много слов.<RET>

Самое главное - то, что я набираю текст.<ESC>

Это мой первый файл.
Я не собираюсь набирать много слов.
Самое главное - то, что я набираю текст.






"first.file" [New file]

Сохранение файла и выход из редактора

Для того, чтобы переписать буфер в файл, и выйти из vi, вернувшись к приглашению $, наберите ZZ. Это называется shift-z-z (заглавная буква "z" дважды). Система записывает файл на диск, выходит из vi и выводит приглашение $.

СОХРАНЕНИЕ ФАЙЛА И ВЫХОД ИЗ РЕДАКТОРА

ПРИМЕР 1: Записать файл first.file и выйти из редактора. Наберите следующую команду:

ZZ

Это мой первый файл.
Я не собираюсь набирать много слов.
Самое главное - то, что я набираю текст.






"first.file" [New file] 3 lines, 100 characters
$

Редактирование существующего файла

Для того, чтобы войти в vi и начать редактировать уже существующий файл, наберите vi и имя файла. Сначала vi выводит на экран имя файла и количество строк и символов в нем, а затем к этому сообщению добавляется первая страница файла.

РЕДАКТИРОВАНИЕ СУЩЕСТВУЮЩЕГО ФАЙЛА

ПРИМЕР 1: Отредактируйте файл wacky, набрав:

$ vi wacky<RET>

РАДУГА
Каждый
Охотник
Желает
Знать
Где
Сидит
Фазан.

АЛФАВИТ
А - арбузы,
Б - бананы,
В - вишня,
Г - груши,
Д - дыни,
Е - ежевика,
Ж - желуди,
З - зелень,
И - ирис,
К - клубника,
Л - лук,
М - малина,
Н - нарцисс,
О - огурцы,
П - помидоры,
"wacky" 53 lines, 911 characters

Перемещение курсора

Перед началом редактирования вы должны переместить курсор туда, где вы хотите изменять или добавлять текст. Командный режим имеет множество способов передвигать курсор. Например:

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

- Нажмите пробел
- Нажмите стрелку вправо
- Наберите букву
l

Передвинуть курсор на одну позицию влево:

- Нажмите клавишу <BACKSPACE>
- Нажмите стрелку влево
- Наберите букву
h

Передвинуть курсор на одну строку вниз:

- Нажмите стрелку вниз
- Наберите букву
j

Курсор передвигается в ту же позицию следующей строки - если это, конечно, возможно. Если в этой позиции НЕТ символа - то vi ставит курсор в конец более короткой строки, но запоминает его исходное место. И если вы передвинете курсор еще на одну строку вниз и в той строке будет символ в исходной позиции - курсор встанет именно на нее.

- Нажмите RETURN <RET>
- Нажмите знак плюс (
+)

Эти две команды перемещают курсор на первый символ в последующей строке, а не на первую позицию строки.

Передвинуть курсор на одну строку вверх:

- Нажмите стрелку вверх
- Наберите букву
k
- Нажмите знак минус (
-)

Вы можете также передвигать курсор сразу на несколько символов или строк. Для этого нужно перед командой указать число символов или строк. Например, 3l передвигает курсор на три символа вправо; 4<стрелка вниз> - на четыре строки вниз.

ПЕРЕМЕЩЕНИЕ КУРСОРА

ЧТОБЫ ПЕРЕДВИНУТЬ КУРСОР НАЖМИТЕ КЛАВИШУ:

один символ вправо:
пробел
стрелка вправо
l
один символ влево:
<BACKSPASE>
стрелка влево
h
одну строку вниз:
стрелка вниз
j
<RET>
+
одну сроку вверх:
стрелка вверх
k
-

Перемещение по словам

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

Чтобы передвинуть курсор на одно слово за нажатие:

- Буква w - передвинуться на начало следующего слова

- Буква e - передвинуться на конец слова

- Буква b - передвинуться на начало предыдущего слова

Чтобы передвинуть курсор на одно слово за нажатие, игнорируя пунктуацию:

- Буква W - передвинуться на начало следующего слова

- Буква E - передвинуться на конец слова

- Буква B - передвинуться на начало предыдущего слова

Вы можете также передвигать курсор сразу на несколько слов за одно нажатие. Для этого нужно перед соответствующей командой указать число слов, на которое вы хотите переместить курсор. Например, 3w передвигает курсор на начало третьего слова вправо.

ПЕРЕМЕЩЕНИЕ ПО СЛОВАМ

ЧТОБЫ ПЕРЕДВИНУТЬ КУРСОР НАЖМИТЕ КЛАВИШУ:

начало следующего слова:
w
конец текущего слова:
e
начало предыдущего слова:
b

ИГНОРИРУЯ ПУНКТУАЦИЮ

начало следующего слова:
W
конец текущего слова:
E
начало предыдущего слова:
B
несколько слов сразу:
nw
(
n - число слов)

Перемещение по строкам

Ниже приведены некоторые команды, благодаря которым вы сможете быстрее передвигаться по строкам.

Переместиться на первый символ текущей строки - нажмите ^.

Если перед первым символом строки стоят пробелы или табуляции, то для перемещения в ее начало нажмите h, <BACKSPASE> или 0 (ноль).

Переместиться на последний символ строки - нажмите $. Если строка заканчивается пробелами, то курсор встает на последний пробел.

Переместиться на первую строку файла - наберите 1G.

Переместиться на последнюю строку файла - наберите G.

Если вы знаете номер нужной вам строки, наберите ее номер и букву G. Например, 2G передвигает курсор на вторую строку буфера.

В третьем уроке раздела рассказывается, как вывести на экран номера строк.

ПЕРЕМЕЩЕНИЕ ПО СТРОКАМ

ЧТОБЫ ПЕРЕДВИНУТЬ КУРСОР ПО СТРОКАМ НАЖМИТЕ КЛАВИШУ:


первый символ строки: ^

последний символ строки:
$

начало файла:
1G

конец файла:
G

указанную строку:
nG
(
n - номер строки)

Перемещение по экрану

Вы можете перемещать курсор на верхнюю строку экрана, на нижнюю строку и на середину экрана:

Переместить курсор на верхнюю строку экрана - нажмите букву H.

Переместить курсор на середину экрана - нажмите букву M.

Переместить курсор на нижнюю строку экрана - нажмите букву L.

Скроллирование (scrolling)

Чтобы просмотреть примерно полэкрана выше или ниже того, что находится на экране сейчас, выполните команды:

Проскроллировать полэкрана вниз - нажмите <CTRL/d>.

Проскроллировать полэкрана вверх - нажмите <CTRL/u>.

Перемещение по страницам

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

Перейти на следующую страницу - нажмите <CTRL/f>.

Перейти на предыдущую страницу - нажмите <CTRL/b>.

ПЕРЕМЕЩЕНИЕ ПО ЭКРАНУ

На верхнюю строку экрана: H

На середину экрана: M

На нижнюю строку экрана: L

Проскроллировать полэкрана вниз: <CTRL/d>

Проскроллировать полэкрана вверх: <CTRL/u>

Перейти на следующую страницу: <CTRL/f>

Перейти на предыдущую страницу: <CTRL/b>

Вставка текста

Переместив курсор на позицию, где бы вы хотели вставить текст, выполните одну из нижеприведенных команд:

Вставить текст перед курсором - наберите i.

Добавить текст после курсора - наберите a.

Вставить новую строку ниже курсора - наберите o.

Вставить новую строку выше курсора - наберите O.

В результате этих команд вы попадаете в режим ввода текста, поэтому не забывайте нажимать клавишу <ESC>, закончив набор.

ВСТАВКА ТЕКСТА

вставить текст перед курсором: i

добавить текст после курсора: a

вставить новую строку ниже курсора: o

вставить новую строку выше курсора: O

ПРИМЕР 1: В файл wacky вставьте текст и новые строки. Буквы в <...> не появляются на экране.

Переместите курсор в начало пятой строки и напечатайте:

iКогда и <ESC>

oИ как давно<ESC>

Переместите курсор в первую строку и напечатайте:

OПРОСТО ФАЙЛ<ESC>


ПРОСТО ФАЙЛ
РАДУГА
Каждый
Охотник
Желает
Знать
Когда и Где
И как давно
Сидит
Фазан.

АЛФАВИТ
А - арбузы,
Б - бананы,
"wacky" 55 lines, 942 characters

Удаление текста

Вы можете перемещать или удалять символы, слова и строки.

Чтобы удалить символ, установите на нем курсор и

Нажмите x

Чтобы удалить несколько символов подряд, поставьте курсор на первый из них и

Нажмите x столько раз, сколько символов вы решили удалить
Если вы знаете количество символов, которые вы хотите удалить, то укажите его перед
x. Например, команда 7x удалит 7 символов подряд.

Чтобы удалить слово, поставьте курсор на его начало и

Наберите dw
Для удаления нескольких слов подряд, укажите их количество. Например, команда 12dw удалит 12 слов.

Чтобы удалить текущую строку, в которой стоит курсор

Наберите dd
Для удаления нескольких строк подряд, укажите их количество. Например, 6dd удаляет шесть строк - текущую и пять последующих.
Удалить часть строки от начала до курсора - наберите
d^
Удалить часть строки от курсора до конца - наберите d$
Удалить все от текущей строки до конца буфера - наберите dG

Отмена изменений

Команда u отменяет команду, выполненную последней. Нажав u вторично, вы вернете строку в исходное состояние (отмена отмены).

Если вы совершили несколько изменений строки и НЕ ПЕРЕМЕЩАЛИ курсор на другую строку, то вы можете вернуть эту строку в исходное состояние, набрав U.

УДАЛЕНИЕ ТЕКСТА

Удалить один символ: x

Удалить несколько символов:
nx
(n
количество символов)

Удалить одно слово:
dw

Удалить несколько слов:
ndw
(n
количество слов)

Удалить текущую строку:
dd

Удалить несколько строк:
ndd
(
n количество строк)

Удалить начало строки до курсора:
d^

Удалить конец строки после курсора:
d$

Удалить остаток буфера от строки:
dG


ОТМЕНА ИЗМЕНЕНИЙ

Отменить последнюю команду:
u
Отменить изменения строки:
U

Выводы и упражнения

Выводы урока

Вызов редактора vi: vi имя_файла<RET>

Командный режим: режим ввода команд vi

большинство команд не появляются на экране
большинство команд не нуждаются в нажатии
<RET>
<ESC> отменяет частично набранную команду
световая или звуковая реакция на неверную команду

Режим ввода текста: то, что вы набираете, идет в главный буфер

символы появляются на экране при наборе

Переход в режим ввода текста и добавление текста:

нажмите a, но НЕ нажимайте <RET>
наберите новый текст
нажмите
<ESC> для возвращения в командный режим

Запись содержимого буфера в файл и выход из vi: ZZ

Редактирование файла: vi имя_файла<RET>

Перемещение курсора в нужное вам место

смотрите рабочую помощь в третьем уроке этого раздела

Вставка текста

iвставить текст перед курсором
aвставить текст после курсора
oсоздать новую строку под курсором
Oсоздать новую строку над курсором

Удаление текста

смотрите рабочую помощь в третьем уроке этого раздела

Упражнение 3.1.А

А. Если вам нужно выйти из файла first.file, наберите ZZ. Затем войдите в каталог unit3 вашего каталога.

1. Создайте с помощью vi новый файл под именем address.

2. Наберите в три строки ваше имя и адрес.

3. Сохраните файл address и выйдите из него.

B. Выведите на экран содержимое каталога unit3 и найдите файл paint. Выполните нижеприведенные упражнения на редактирование этого файла. В конце упражнения приведена копия файла paint с указанными номерами строк. Использование ее облегчит вашу работу.

1. Вызовите vi для редактирования файла paint.

2. В строке 15 удалите букву "с" в слове "осленя".

3. В строке 22 удалите слово "самого".

4. В конец строки 24 вставьте слово "общем".

5. В строке 10 удалите в слове "поинтересовалась" первые два символа и вставьте на их место буквы "за", чтобы получить слово "заинтересовалась".

6. В строке 25 в слове "вами" замените первую букву заглавной.

7. В строке 27 удалите 4 слова "этого нелегкого для нас" одной командой.

8. В строку 27 добавьте два слова "представители немедленно" после слова "наши".

9. В строке 23 удалите слово "цветные".

10. В строке 28 удалите слово "рогов" и вставьте на его место слово "образцов".

11. В строке 28 добавьте букву "о" в слово "выбра".

12. Переместитесь в первую строку одной командой.

13. В строке 8 вставьте в слово "Ибрамович" буквы "ги", чтобы получить "Ибрагимович".

14. В строке 5 удалите букву "д" в слове "Черномордск" и добавьте после него слово "Украина".

15. В строке 3 вставьте недостающие пробелы для выравнивания слова "председатель".

16. Переместитесь одной командой в строку 38.

17. В строке 38 удалите первую букву "б" в слове "Аббатова" и вставьте на ее место букву "р", чтобы получить "Арбатова".

18. Вставьте две пустые строки после строки 38.

19. Удалите одной командой строки с 29-й по 31-ю.

20. В строке 16 вставьте пробел между словами "Рога" и "горного".

21. Сохраните файл и вернитесь к приглашению $.

22. Команда diff сравнивает два файла и сообщает об имеющихся отличиях. Выведите на экран содержимое текущего каталога и найдите в нем файл check.paint. Для сравнения двух файлов наберите:

$ diff paint check.paint<RET>

Если система выдаст вам приглашение $, значит файлы идентичны. Если же существуют различия, то команда diff укажет номера различающихся строк и требуемые поправки. Строки с символом < принадлежат первому файлу, paint. Строки с символом > принадлежат второму файлу, check.paint. Отредактируйте файл paint так, чтобы он полностью совпадал с файлом check.paint.

C. Создайте в каталоге unit3 новый файл под именем class.let. Напишите короткое письмо и отправьте его по электронной почте товарищу по классу.

1 Бендеру
2 Остапу Ибрагимовичу,
3 Председателю
4 ТОО "Рога и копыта",
5 г.Черномордск
6
7
8 Уважаемый Остап Ибрамович!
9
10 Наша Ассоциация поинтересовалась образцами поставляемой Вами
11 продукции. Для оформления нашего строящегося офиса мы бы
12 хотели получить от Вас следующее (в порядке предпочтения):
13
14 А. Рога лося
15 Б. Рога осленя
16 В. Рогагорного козла
17 Г. Копыта горного козла
18
19 В случае, если Вы не можете предоставить вышеуказанный товар,
20 возможна замена оленьих рогов рогами северного оленя, рогов
21 горного козла рогами барана домашнего и копыт горного козла
22 копытами козла самого обыкновенного соответственно.
23 Пришлите, пожалуйста, цветные фотографии отобранной для нас
24 продукции, чтобы окончательный выбор был сделан на
25 собрании Ассоциации. После этого мы договоримся с вами об
26 оплате Ваших услуг, и, в случае положительного решения
27 этого нелегкого для нас вопроса, наши выедут в г.Черноморск.
28 В вопросе выбра интересующих нас рогов Ассоциация целиком
29
30
31
32 полагается на Вашу компетентность.
33
34 С уважением,
35
36 Александр Балаганов,
37 Президент
38 Ассоциации охотников г.Аббатова

Поиск, изменение и перемещение текста

Цели

  1. Искать в файле по образцу текста.(/ или ?)
  2. Заменять строку или знак.
  3. Заменять текст.(r или cw)
  4. Разбивать строку с помощью r.
  5. Копировать текст с помощью команд yank и put.
  6. Перемещать текст с помощью команд delete и put.
  7. Перемещать символы с помощью команды xp.

Поиск по образцу

Строкой текста, используемой как образец, может являться любая последовательность символов. При редактировании больших файлов может понадобиться такая функция vi как поиск по образцу. Поисковый образец в редакторе vi не может превышать одну строку текста.

Вы можете вести поиск вперед и назад по всему буферу, начиная от курсора.

Поиск по образцу вперед:

≈ Наберите / (слэш), а затем нужный вам образец, после чего нажмите <RET>.

После того, как вы нажмете /, курсор переместится вниз экрана - там вы сможете набрать образец. После того, как вы его наберете и нажмете <RET>, курсор возвращается на исходную позицию. Поиск начинается с символа, стоящего справа от курсора. Если vi не находит образец до конца файла, то поиск автоматически продолжается с начала файла вплоть до места начала поиска. Если поиск завершен успешно, курсор останавливается на первом символе образца. Если же нет, то появляется сообщение "Pattern not found" (Образец не найден).

Поиск по образцу назад:

Наберите ?, а затем нужный вам образец, после чего нажмите <RET>.

Поиск начинается с символа, стоящего слева от курсора, и продолжается по необходимости с конца буфера.

Повтор поиска:

Найти следующий образец - нажмите n

Продолжить поиск в обратном направлении - нажмите N

ПОИСК ПО ОБРАЗЦУ

ПРИМЕР 1: Поиск по образцу вперед и назад в файле check.paint.

vi check.paint<RET>

/рога<RET> vi ищет слово "рога" в направлении вперед

n
n
n vi
повторяет поиск вперед трижды

?копыт<RET> vi ищет слово "копыт" в направлении назад

n vi продолжает поиск в том же направлении

N vi изменяет направление поиска

?бивни<RET>

Pattern not found

ZZ

$

10 Наша Ассоциация заинтересовалась образцами поставляемой Вами
11 продукции. Для оформления нашего строящегося офиса мы бы
12 хотели получить от Вас следующее (в порядке предпочтения):
13
14 А. Рога лося
15 Б. Рога оленя
16 В. Рога горного козла
17 Г. Копыта горного козла
18
19 В случае, если Вы не можете предоставить вышеуказанный товар,
20 возможна замена оленьих рогов рогами северного оленя, рогов
21 горного козла рогами барана домашнего и копыт горного козла
22 копытами козла обыкновенного соответственно.

Замена текста

Находясь в редакторе vi, вы можете заменять символ одним или несколькими символами, заменять строки, расщеплять строки и соединять их.

Замена одного символа

Команда r заменяет один символ на другой.

Чтобы произвести замену, поставьте курсор на этот символ и

Напечатайте букву r, а затем символ, который вы хотите вставить.

ЗАМЕНА ТЕКСТА

ПРИМЕР 1: Измените ветер на вечер.

$ cat boogie<RET>

Субботний ветер,
И вот опять
Я надеваю штиблеты
И грязный носок,
Я собирал
Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
В холодильнике моем
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

$ vi boogie<RET>

Поставьте курсор на букву т слова ветер и наберите: rч. Ветер превращается в вечер.

Субботний вечер,
И вот опять
Я надеваю штиблеты
И грязный носок,
Я собирал
Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
В холодильнике моем
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги
.

Замена одного символа несколькими

Иногда вам может понадобиться заменить один символ несколькими. Для этого существует команда s. vi помечает символ, который вы хотите заменить, и переводит вас в режим ввода текста. Наберите нужные вам символы и нажмите <ESC>, чтобы выйти из режима ввода.

Чтобы произвести замену, поставьте курсор на заменяемый символ и

Напечатайте букву s, а затем символы, которые вы хотите вставить, после чего нажмите <ESC>.

ЗАМЕНА ОДНОГО СИМВОЛА НЕСКОЛЬКИМИ

ПРИМЕР 1: Измените собирал на собираюсь.


Поставьте курсор на букву л слова собирал и наберите: sюсь<ESC>. Собирал превращается в собираюсь.

Субботний вечер,
И вот опять
Я надеваю штиблеты
И грязный носок,
Я собираюсь
Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
В холодильнике моем
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

Замена слов

Команда cw заменяет слова. Как и в случае команды s, vi автоматически переводит вас в режим ввода текста для набора новых слов.

Чтобы изменить одно слово, передвиньте курсор на его начало и

Напечатайте cw, а затем новое слово, после чего нажмите <ESC>.

Чтобы изменить несколько слов, укажите их количество перед буквами cw. Например, 5cw позволяет вам заменить пять слов.

ЗАМЕНА СЛОВ

ПРИМЕР 1: Измените грязный носок на галстук "шнурок".

Поставьте курсор на букву г слова грязный и наберите: 2cwгалстук "шнурок"<ESC>. Грязный носок превратился в галстук "шнурок".

Субботний вечер,
И вот опять
Я надеваю штиблеты
И галстук "шнурок",
Я собираюсь
Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
В холодильнике моем
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

Замена строки на новую

Команда cc меняет строку текста. Курсор может стоять в любом месте строки, которую вы меняете. После этой команды vi переключается в режим ввода текста, где вы можете набрать новую строку (строки).

Чтобы заменить строку текста, поставьте курсор на нее и

Напечатайте , а затем новую строку, после чего нажмите <ESC>.

Чтобы изменить несколько строк, укажите их количество перед буквами cc. Например, 3cc позволяет вам заменить три строки текста.

ЗАМЕНА СТРОКИ НА НОВУЮ

ПРИМЕР 1: Измените В холодильнике моем на На улице стоит.

Поставьте курсор на слово В и наберите: ccНа улице стоит<ESC>.

Субботний вечер,
И вот опять
Я надеваю штиблеты
И галстук "шнурок",
Я собираюсь
Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

Разбиение и соединение строк

Когда вы разбиваете строку, vi заменяет символ, стоящий над курсором на символ новой строки <RET>.

Когда же вы соединяете две строки или более, vi заменяет <RET> на один пробел (между словами) или на два пробела (между предложениями).

Чтобы разбить строку на две части, поставьте курсор на тот пробел, где вы хотите совершить разбиение и

≈ Наберите r и нажмите <RET>

Чтобы соединить две строки в одну, поставьте курсор на первую строку и

Наберите J
Чтобы соединить несколько строк, укажите их количество пере J. Например, команда 4J соединяет четыре строки.

РАЗБИЕНИЕ И СОЕДИНЕНИЕ СТРОК

ПРИМЕР1: Разбейте и соедините строки.

Поставьте курсор на пробел между словами Пойти и потанцевать и наберите:


r<RET>.
Эта строка разбилась на две.

Переместите курсор на строку Я собираюсь и наберите:


3J vi соединяет три строки в одну.

Субботний вечер,
И вот опять
Я надеваю штиблеты
И галстук "шнурок",
Я собираюсь Пойти потанцевать.
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

Перемещение текста: команда put

Часто вам бывает нужно передвинуть текст в файле с одного места на другое. Вам не придется удалять этот текст, а потом набирать его заново в другом месте, если вы воспользуетесь командой put.

Каждый раз, когда вы удаляете текст, vi убирает его из главного буфера, но не уничтожает его совсем, а помещает его в безымянный буфер (unnamed buffer). Этот буфер существует отдельно от главного буфера, содержащего копию редактируемого вами файла.

Команда put помещает содержимое безымянного буфера обратно в файл двумя способами:

p размещает содержимое безымянного буфера СПРАВА от курсора или СНИЗУ от текущей строки.

P размещает содержимое безымянного буфера СЛЕВА от курсора или СВЕРХУ от текущей строки.

Перемещение текста осуществляется в три этапа:

1. Удалить текст одной командой.
2. Передвинуть курсор туда, куда нужно вставить этот текст.
3. Нажать
p или P для размещения в этом месте содержимого безымянного буфера.

Ниже приведен результат Примера 1

Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.

ПЕРЕМЕЩЕНИЕ ТЕКСТА: КОМАНДА put

1. Удалить текст одной командой.

2. Передвинуть курсор туда, куда нужно вставить этот текст.

3. Нажать p или P.

ПРИМЕР 1: Передвинуть строку "Я собираюсь Пойти потанцевать".

Поместите курсор на этой строке и наберите:

dd vi помещает эту строку в безымянный буфер.

Переместите курсор на строку "И вот опять" и наберите:

p удаленная ранее строка появится под курсором.

Примеры применения команды put

Безымянный буфер содержит текст, удаленный последним. Если вы удаляете другую часть текста, то vi переписывает безымянный буфер заново.

ПРИМЕРЫ ПРИМЕНЕНИЯ КОМАНДЫ put

ПРИМЕР 1: Безымянный буфер переписывается заново при удалении другого текста.


В строке Буги-вуги с ночи до утра поставьте курсор на слово с и наберите:
dw vi удалит с
dw vi удалит ночи
dw vi удалит до


Поместите курсор на пробел перед словом утра и наберите:
p Появляется только слово, удаленное последним.


Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.

Примеры применения команды put (продолжение)

Команда put копирует текст, находящийся в безымянном буфере, столько раз, сколько вы наберете p. Смотрите Пример 2 на следующей странице.

ПРИМЕРЫ ПРИМЕНЕНИЯ КОМАНДЫ put

ПРИМЕР 2: Копирование содержимого безымянного буфера несколько раз подряд.


Поместите курсор на вторую букву а в слове жара и наберите:
x vi удаляет эту букву
p
p
p vi добавляет букву а трижды.

Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жараа,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.

Копирование текста

При перемещении текста вы удаляете его в одном месте, а затем добавляете в другом. При копировании исходный текст остается там, где он есть, а его копия добавляется в файл в другом месте.

Команда yank

Команда yank (y) записывает текст в безымянный буфер, НЕ УДАЛЯЯ его из главного буфера. Записав текст, вы вставляете его в нужное вам место командой put.

Чтобы записать слово и последующий за ним пробел в безымянный буфер, поставьте курсор на начало слова и

Наберите yw
Чтобы записать несколько слов, укажите их число перед буквами yw. Например, 3yw записывает три слова подряд.

Чтобы записать в буфер строку, поставьте на нее курсор и

Наберите yy
Для записи нескольких строк укажите их число перед буквами yy. Например, 5yy записывает пять строк - текущую и четыре последующих.
Для записи части строки от курсора до конца, наберите
y$.
Для записи части строки от начала до курсора, наберите y^.
Для записи участка буфера от курсора до конца, наберите yG.

Копирование текста осуществляется в три этапа:

1. Запишите текст в безымянный буфер одной командой. Вы можете не увидеть результат этой команды на экране.

2. Поместите курсор туда, куда вы хотите скопировать текст.

3. Наберите p или P, чтобы скопировать содержимое буфера.

КОМАНДА yank

Перемещение Копирование


1.удалить 1.записать в безымянный буфер
2.передвинуть курсор 2.передвинуть курсор
3.
p или P 3.p или P

ПРИМЕР 1: Скопировать строку Ведь я люблю буги-вуги.

Поместите курсор на эту строку и наберите:

yy vi записывает строку в безымянный буфер.
p
p vi копирует эту строку дважды.


Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.

Перестановка символов командой xp

Команда xp переставляет два символа местами.

Команда x удаляет символ в текущей позиции курсора. Команда p копирует безымянный буфер ВПРАВО от курсора. Команда xp комбинирует эти две команды.

Команда x удаляет символ в текущей позиции курсора и записывает его в безымянный буфер. Команда p вставляет этот символ справа от курсора.

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

Наберите xp

ПЕРЕСТАНОВКА СИМВОЛОВ КОМАНДОЙ xp

ПРИМЕР 1: Переставить две буквы в слове Ужансая.

Поставьте курсор на букву н и наберите:
xp

Строка приняла вид Ужасная жара.

ZZ

$

Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужасная жара,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.

Выводы урока и упражнения

Выводы урока

Образец: любой символ или последовательность символов

Поиск по образцу вперед:

≈ Наберите / (слэш) и образец, затем нажмите <RET>

Поиск по образцу назад:

Наберите ? и образец, затем нажмите <RET>

Повтор поиска:

В том же направлении - наберите n
В обратном направлении - наберите N

Замена одного символа другим: наберите r и заменяющий символ

Замена одного символа несколькими: наберите s и заменяющий текст, затем нажмите <ESC>

Замена слова: наберите cw и новое слово, затем нажмите <ESC>

Для замены нескольких слов, укажите их число перед cw

Замена строки : наберите cc и новую строку, затем нажмите <ESC>

Для замены нескольких строк, укажите их число перед cc

Разбиение строки: наберите r и нажмите <RET>

Соединение строк: поместите курсор на первую из них и нажмите J

Для соединения строк, укажите их число перед буквой J

Перемещение текста в буфере:

Удалите текст одной командой
Передвиньте курсор в нужное место, наберите
p или P

Копирование текста:

Запишите текст в безымянный буфер
Передвиньте курсор в нужное место, наберите
p или P

Перестановка двух символов: наберите xp

Упражнение 3.2.А

А. Войдите в каталог unit3 вашей директории. Выведите на экран его содержание и найдите файл под именем poem. Выполните указанные ниже упражнения на редактирование этого файла. В конце упражнения находится копия файла poem с указанной нумерацией строк. Использование ее облегчит вашу работу.

1. Вызовите vi для редактирования файла poem.

2. Найдите слово "сестры". Замените эту строку на

"братия мои, что"

3. Найдите слово "Црекви". Измените его на "Церкви".

4. Найдите слово "невиновными". Командой cw замените его на "неповинными".

5. В строке 6 командой замены замените букву "н" в слове "признающими" на "ыв" - "призывающими".

6. Одной командой соедините строки 22, 23 и 24 в одну строку.

7. Разбейте строку 7 между словами "мир" и "от Бога". Затем соедините "от Бога Отца" со следующей строкой.

8. Найдите слово "чтоб". Замените его на "чтобы". Проведите подобную операцию по всему файлу.

9. Найдите слово "Хреста". Замените в нем "е" на "и" - "Христа". Проведите подобную операцию по всему файлу.

10. В строке 14 переставьте буквы "е" и "л" в слове "явелния" - "явления".

11. Переместите вторую строку в конец файла.

12. Скопируйте первую строку в предпоследнюю - перед строкой "(из Библии)".

13. Сохраните файл poem и выйдите из него.

14. С помощью команды diff сравните файлы poem и check.poem. Отредактируйте файл poem так, чтобы он полностью совпадал с файлом check.poem.

1 1-е КОРИНФЯНАМ
2 (из Библии)
3 Павел, волею Божиею призванный Апостол Иисуса Христа,
4 и Сосфен брат, Црекви Божией, находящей в Коринфе,
5 освященным во Христе Иисусе, призванным святым, со всеми
6 признающими имя Господа нашего Иисуса Хреста, во всяком
7 месте, у них и у нас: Благодать вам и мир от Бога Отца
8 нашего и Господа Иисуса Христа.
9 Непрестанно благодарю Бога моего за вас, ради благодати
10 Божией, дарованной вам во Хресте Иисусе, потому что в Нем
11 вы обогатились всем, всяким словом и всяким познанием,-
12 ибо свидетельство Христово утвердилось в вас,-
13 так что вы не имеете недостатка ни в каком даровании,
14 ожидая явелния Господа нашего Иисуса Христа, который
15 и утвердит вас до конца, чтоб вам быть невиновными в день
16 Господа нашего Иисуса Хреста. Верен Бог, Которым вы призваны
17 в общение Сына Его Иисуса Христа, Господа нашего.
18 Умоляю вас, братия, именем Господа нашего Иисуса Хреста,
19 чтоб вы все говорили одно, и не было между вами разделений,
20 но чтоб вы соединены были в одном духе и в одних мыслях.
21 Ибо от домашних Хлоиных сделалось мне известным о вас,
22 сестры и братья,
23 между вами есть споры.
24 Я разумею то,
25 что у вас говорят: "я Павлов"; "я Аполлосов"; "я Кифин";
26 "а я Хрестов". Разве разделился Христос? разве Павел
27 распялся за вас? или во имя Павла вы крестились?

Редактор ex

Цели

  1. Записывать командой :w.
  2. Записывать и выходить командой :wq.
  3. Выходить командой :q или :q!.
  4. Заменять в файле командой :s.
  5. Глобально изменять файл командой g.
  6. Вызывать на редактирование второй файл, не выходя из редактора, командой :e.
  7. Выводить на экран нумерацию строк командой :set nu.

Редактор ex

Редактор vi, о котором рассказывается в этом разделе, - это экранно-ориентированный редактор, доступный в системе UNIX. Также доступен и другой редактор - ex, строко-ориентированный редактор, который вы можете использовать как наряду с vi, так и отдельно от него.

Редактор vi имеет такие экранно-ориентированные возможности, как изменения текста в позиции курсора. Редактор ex, напротив, обеспечивает глобальные команды для работы с файлом. Он подобен ed, стандартному строковому редактору ОС UNIX. Строковый редактор способен на:

Глобальные изменения
Составное редактирование строк
Изменение среды
Более быстрое редактирование

Редактор ex имеет несколько полезных команд, дополняющих vi. Вы вводите все команды ex в той же командной строке. Командная строка редактора ex:

работает в командном режиме
начинается с двоеточия
заканчивается
<RET>
выводит на экран все набираемые символы

После того, как вы набираете двоеточие, курсор перемещается вниз экрана в командную строку ex. После того, как вы набрали команду и нажали <RET>, курсор возвращается в исходную позицию.

РЕДАКТОР ex

ex: строко-ориентированный текстовый редактор ОС UNIX

≈ глобальные изменения
составное редактирование строк
изменение среды
более быстрое редактирование

Командная строка редактора ex:

работает в командном режиме
начинается с двоеточия
заканчивается<RET>
выводит на экран все набираемые символы

Сохранение буфера и выход из vi

До этого вы осуществляли запись буфера и выход из vi командой ZZ. Но находясь в vi, вы можете использовать команды редактора ex для того, чтобы записать содержимое буфера и продолжить работу в редакторе, или чтобы выйти из него, не сохраняя последние изменения, и т.д. Вот некоторые из этих команд:

Сохранить файл под его текущим именем - наберите :w и нажмите <RET>. ex печатает внизу экрана имя файла, количество строк и символов в нем. После этого вы можете продолжать редактировать буфер. Используйте эту команду как меру предосторожности на случай перебоев с электроэнергией.

Сохранить файл под новым именем - наберите :w, наберите новое имя файла и нажмите <RET>.

Переписать существующий файл - наберите :w!, имя файла и нажмите <RET>.

Выйти из файла после его записи и вернуться в shell - наберите :q и нажмите <RET>.

Записать файл и вернуться в shell - комбинированная команда, наберите :wq и нажмите <RET>.

Выйти из файла, не записывая изменений - наберите :q! и нажмите <RET>.

СОХРАНЕНИЕ БУФЕРА И ВЫХОД ИЗ vi

Запись файла под текущим именем: :w

Запись файла под новым именем: :w имя файла

Переписывание существующего файла: :w! имя файла

Выход из файла после записи: :q

Запись и выход из файла: :wq

Выход из файла без записи изменений: :q!

СОХРАНЕНИЕ БУФЕРА И ВЫХОД ИЗ vi
(ПРОДОЛЖЕНИЕ)

ПРИМЕР 1: Сохранить файл stu.info.

$ cat stu.info<RET>

Название
Имя
Адрес
Город
Область
Индекс

$ vi stu.info<RET>

:w<RET>

"stu.info" 6 lines, 34 characters

:w newstu.info<RET>

"newstu.info" [New file] 6 lines, 34 characters

dd vi удаляет первую строку "Название".

:w newstu.info<RET>

"File exists - use "w! newstu.info" to overwrite

:w! newstu.info<RET>

"newstu.info" 5 lines, 26 characters

:wq<RET>

"stu.info" 5 lines, 26 characters

$

Имя
Адрес
Город
Область
Индекс






"stu.info" 5 lines, 26 characters
$

Команда замены

Команда замены позволяет проводить замену последовательности символов на новую. Формат команды замены:

:n,ms/образец/новый образец/g<RET>

где:

n,m ограничения на номера строк, где вы хотите производить замену. Если не указываются, то замена производится только в текущей строке.

s команда замены

/ разграничитель между образцами

образец последовательность символов, которые вы хотите найти и заменить

новый образец последовательность символов, заменяющая исходную. Если не указывается, т.е. :s/образец//<RET>, ex удаляет исходный образец - заменяет его пустым текстом.

g знак глобальных замен в строках. Если не указывается, то команда заменяет лишь первое вхождение образца в каждой строке.

Метасимволы

Метасимвол - это символ, который при определенных обстоятельствах представляет нечто большее, чем свое буквенное значение.

Вот некоторые метасимволы редактора ex:

Начало любой строки - ^

Символ доллара $ имеет как метасимвол два значения.

Конец любой строки - если $ указан ПОСЛЕ команды поиска и замены.

Последняя строка буфера - если $ указан ПЕРЕД такими командами, как запись и замена.

Посмотрите примеры применения метасимволов на следующей странице.

КОМАНДЫ ЗАМЕНЫ

:n,ms/образец/новый образец/g<RET>

:s/образец/новый образец/<RET> Замена первого вхождения образца в текущей строке.

:s/образец/новый образец/g<RET> Замена всех вхождений образца в текущей строке.

:5,25s/образец/новый образец/g<RET> Замена всех вхождений образца в строках с 5-й по 25-ю.

:6,8s/^/новый образец/<RET> Замена начала строк с 6-й по 8-ю на новый образец.

:6,8s/$/новый образец/<RET> Замена конца строк с 6-й по 8-ю на новый образец.

:1,$s/образец/новый образец/g<RET> Замена всех вхождений образца в каждой строке.

КОМАНДА ЗАМЕНЫ (ПРОДОЛЖЕНИЕ)

ПРИМЕР 1: Сделать замены в файле story.

$cat story<RET>

1 Авос и Небос.
2 Жили-были два друга Авос и Небос.
3 Когда Авос и Небос пошли в школу, то попали в один класс
4 и оба были одеты в зеленые пиджачки с розовыми рукавами.
5 Авос и Небос стали первыми учениками, на которых обратила
6 внимание учительница. Она поинтересовалась: "Как вас зовут?"
7 "Авос,"- ответил один. "Небос,"- ответил другой.

$ vi story<RET>

:s/ос/ось/<RET>

:s/ос/ось/g<RET>

:2,3s/ос/ось/<RET>

:1,$s/ос/ось/g<RET>

:q!<RET>.

$

* 1 Авосььь и Небосьь.
2 Жили-были два друга Авосьь и Небось.
3 Когда Авосьь и Небось пошли в школу, то попали в один класс
4 и оба были одеты в зеленые пиджачки с розовыми рукавами.
5 Авось и Небось стали первыми учениками, на которых обратила
6 внимание учительница. Она спросила: "Как вас зовут?"
7 "Авось,"- ответил один. "Небось,"- ответил другой.

Вызов на редактирование второго файла без выхода из vi

Иногда, во время редактирования одного файла, вам может потребоваться просмотреть текст из другого. Если вы сохранили текущий буфер, то команда :e позволит вам вызвать на редактирование другой файл, не выходя при этом из vi. Если вы наберете :e имя_файла, то выбранный вами файл заменит текущий буфер. Когда вы вернетесь в первый файл, то курсор останется в своей прежней позиции.

Каждый раз, когда вы вызываете на редактирование другой файл, ex выводит на экран количество строк и символов в этом файле и запоминает его имя как имя по умолчанию для команды :e.

Чтобы вызвать на редактирование второй файл, не выходя из vi, нужно сохранить первый и

Набрать :e имя_файла и нажать <RET>.

Если первый файл сохранять не нужно, то наберите :e! имя_файла и нажмите <RET>.

Если вы не указываете имя файла, то ex использует по умолчанию имя файла, которое использовалось в предыдущей команде :e.

Если вы не помните это имя, то, чтобы узнать его и количество строк в этом файле:

Наберите :f и нажмите <RET>.

ВЫЗОВ НА РЕДАКТИРОВАНИЕ ВТОРОГО ФАЙЛА БЕЗ ВЫХОДА ИЗ vi

ПРИМЕР 1: Работая с файлом stu.info, отредактировать файл stu.number.

$ vi stu.info<RET>

Поместите курсор в последнюю строку и наберите:

oДомашний телефон<ESC>

:w<RET>

"stu.info" 6 lines, 42 characters

:e stu.number<RET> ex вызывает на редактирование stu.number

"stu.number" 4 lines, 47 characters

:f<RET>

"stu.number" line 1 of 4 --25%--

:e stu.info<RET> ex возвращается на последнюю строку файла stu.info

"stu.info" 6 lines, 42 characters

oошибка<ESC>

:e<RET>

No write since last change (:edit! overrides)

:e!<RET>

"stu.info" 6 lines, 42 characters

:w<RET>

"stu.info" 6 lines, 42 characters

Входное имя
Профессия
Место работы
Рабочий телефон





"stu.number" 4 lines, 47 characters

Копирование файла в буфер

Чтобы скопировать файл в буфер, выполните команду :r. Ее формат:

:r имя_файла<RET>

Команда :r копирует содержимое указанного файла в буфер и размещает его после текущей строки. Количество символов, копируемых при этом в буфер, появляется внизу экрана. Смотрите Пример 1 на следующей странице.

КОПИРОВАНИЕ ФАЙЛА В БУФЕР

ПРИМЕР 1: Работая с файлом stu.info , скопируйте в буфер файл stu.number . Буквы в <...> не появляются на экране.

Поместите курсор на слово "Индекс" и наберите:

:r stu.number<RET>

"stu.number" 4 lines, 47 characters

:w<RET>

"stu.info" 10 lines, 89 characters

Имя
Адрес
Город
Область
Индекс
Домашний телефон
Входное имя
Профессия
Место работы
Рабочий телефон




"stu.info" 10 lines, 89 characters
$

Выполнение команд ОС UNIX внутри vi

Находясь в vi, вы можете выполнять те команды, которые вы вводите на приглашение $.

Чтобы ввести команду системы внутри vi, наберите : ! и нужную команду, затем нажмите <RET>.

Чтобы выполнить последнюю команду снова, наберите : !! и нажмите <RET>.

Чтобы использовать текущий файл в качестве аргумента команды, наберите % (знак процента).

Обновление экрана

Команда <CTRL/l> (строчная буква L) очищает экран, а затем печатает его заново. Это помогает в случае появления на экране непредвиденных символов, как, например, символы при ошибках передачи.

ВЫПОЛНЕНИЕ КОМАНД ОС UNIX ВНУТРИ vi

ПРИМЕР 1: Работая с файлом stu.info, выполнить команды даты и подсчета слов.

:!spell %<RET>

:!spell stu.info

Org

[Hit return to continue] <RET>

:!wc stu.number<RET>

4 7 47 stu.number

[Hit return to continue] <RET>

:!!<RET>

!wc stu.number

4 7 47 stu.number

[Hit return to continue] <RET>

G

:r !date

Tue Jan 31 13:07:09 EST 1989

:w<RET>

"stu.info" 11 lines, 95 characters

Имя
Адрес
Город
Область
Индекс
Домашний телефон
Входное имя
Профессия
Место работы
Рабочий телефон
Tue Jan 31 13:07:09 EST 1989

Установка опций

Вывод на экран нумерации строк командой :set nu

Зачастую для обращения к строке вам необходимо знать ее номер. Например, для установки ограничений в команде замены. Нумерация строк выводится на экран командой :set number<RET> или :set nu<RET>. Нумерация появляется только на время пребывания в редакторе ex. Если вы сохраняете буфер, то ex НЕ ЗАПИСЫВАЕТ в файл номера строк. Если вы добавляете строки в буфер или удаляете их, ex автоматически изменяет соответствующим образом нумерацию строк.

Команда :set nonumber<RET> или :set nonu<RET> убирает нумерацию строк.

ВЫВОД НА ЭКРАН НУМЕРАЦИИ СТРОК КОМАНДОЙ :set nu

ПРИМЕР 1: Работая с файлом stu.info, выведите на экран нумерацию строк и уберите ее с экрана.

:set nu<RET>

Поставьте курсор на слово "Город" и наберите:

4dd ex меняет нумерацию строк.

u ex меняет нумерацию строк.

:set nonu<RET>

:w<RET>

"stu.info" 11 lines, 116 characters

1 Имя
2 Адрес
3 Город
4 Область
5 Индекс
6 Домашний телефон
7 Входное имя
8 Профессия
9 Место работы
10 Рабочий телефон
11
Tue Jan 31 13:07:09 EST 1989



:set nu

Вывод на экран режима работы командой :set smd

Если вы находитесь в режиме вставки, то после команды :set smd<RET> в правом нижнем углу экрана появляются слова "Insert Mode" (режим вставки). В Вашем курсе ваш преподаватель установил опцию ":set showmode".

Чтобы убрать эту опцию выполните команду :set nosmd<RET>.

За дальнейшей информацией об опциях обращайтесь в Приложение к руководству обучаемого.

ВЫВОД НА ЭКРАН РЕЖИМА РАБОТЫ КОМАНДОЙ :set smd

ПРИМЕР 1: Работая с файлом stu.info, уберите с экрана режим работы и выведите его обратно на экран. Буквы в <...> не появляются на экране.

:set nosmd<RET>

i<ESC> "Insert Mode" не выводится на экран.

:set smd<RET>

i<ESC> "Insert Mode" выводится на экран в режиме ввода текста.

:q!<RET>

$

Имя
Адрес
Город
Область
Индекс
Домашний телефон
Входное имя
Профессия
Место работы
Рабочий телефон
Tue Jan 31 13:07:09 EST 1989




:set nosmd

Выводы урока и упражнения

Выводы урока

ex: строчно-ориентированный редактор, который может использоваться как вместе с vi, так и по отдельности.

Команды ex

начинаются с двоеточия
заканчиваются
<RET>
набираемые символы появляются на экране

Сохранение буфера и выход из vi

запись файла под текущим именем :w<RET>
запись файла под новым именем :w имя файла<RET>
переписывание существующего файла :w! имя файла<RET>
выход из файла после записи :q<RET>
запись и выход из файла :wq<RET>
выход из файла без записи изменений :q!<RET>

Команда замены: поиск по образцу с последующей заменой

:n,ms/образец/новый образец/g<RET>

Метасимвол: символ, который при определенных обстоятельствах представляет нечто большее, чем свое буквенное значение.

начало любой строки ^
конец любой строки - $
последняя строка буфера - $ ПЕРЕД командами записи и замены

Редактирование второго файла без выхода из vi

записав текущий файл, наберите :e имя файла<RET>
не записывая текущий файл :e ! имя файла<RET>
просмотр имени текущего файла и числа его строк - :f<RET>

Считывание файла в буфер :r имя файла<RET>

Ввод команд ОС UNIX из vi : ! команда<RET>

выполнение последней команды снова : !!<RET>
использование файла как аргумента команды %
обновление экрана <CTRL/l>

Вывод на экран нумерации строк :set nu<RET>

снятие нумерации :set nonu<RET>

Вывод на экран надписи Insert Mode :set smd<RET>

отмена этой опции :set nosmd<RET>

Упражнение 3.3.А

А. Войдите в каталог unit3 . Выведите на экран его содержимое и найдите файл energy. Выполните упражнения, предложенные ниже, на редактирование указанных строк файла. На следующей странице приведена копия файла energy - вы можете воспользоваться ею.

1. Войдите в vi с файлом energy.

2. Установите нумерацию строк.

Б. Выполните следующие упражнения одной командой замены (:s).

1. В 24-й строке замените первое слово "воздух" на "атмосфера".

2. В строках с 13-й по 21-ю замените слова "наверх" на "вверх".

3. В 9-й строке замените все слова "струи" на "потоки".

4. В 10-й строке удалите слово "такой" и лишний пробел.

5. Замените все слова "грелка" на "печка".

В. Выполните следующие действия:

1. Не выходя из файла energy, запишите изменения буфера.

2. Не выходя из файла energy, вызовите файл light.

3. Не выходя из файла light, вернитесь в файл energy.

4. В 19-ю строку файла energy скопируйте файл light.

5. Снимите нумерацию строк с файла energy.

6. Выйдите из файла energy, НЕ СОХРАНЯЯ содержимое буфера.

7. С помощью команды diff сравните файлы energy и check.energy. Если необходимо, редактируйте файл energy до его совпадения с файлом check.energy

КОНВЕКЦИЯ

Жидкости и газы обычно нагревают снизу. Чайник с водой ставят на огонь, радиаторы отопления помещают около пола. Случайно ли это?

Поместив руку над горячей грелкой или над горящей лампой , мы почувствуем, что от грелки или лампы наверх поднимаются теплые струи воздуха. Эти струи могут даже вращать небольшую бумажную вертушку, помещенную над лампой. Здесь мы наблюдаем вид такой теплопередачи, который называют конвекцией.

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

Конвекция происходит в наших жилых комнатах, благодаря чему воздух в них нагревается. Воздух вблизи потолка комнаты теплее, чем вблизи пола. Это можно проверить, помещая комнатный термометр в верхнюю и нижнюю части комнаты.