Раздел 3
viОбзор
Редакторы могут быть строко-ориентированными, как например ed и ex, или экранно-ориентированными, как редактор vi.
vi
- стандартный полноэкранный редактор ОС UNIX. Он работает на многих терминалах и имеет все возможности экранно-ориентированного редактора (управление курсором и прочее). Команды vi легко запоминаются мнемонически. Однако, vi - это не текстовой процессор.Размер редактируемого с помощью
vi файла ограничен из-за главного буфера vi и зависит от типа компьютера и используемой версии операционной системы UNIX. Стандартные ограничения (для компьютеров типа 3В) таковы:≈ Длина строки: максимум 1023 символа
≈ Размер файла: примерно 225,000 символов
ЦЕЛИ
Введение в
viЦели
Редактор
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>
[]
Режимы редактора
viРабота с редактором
vi производится в двух режимах: командном режиме и режиме ввода текста.Командный режим
Войдя в редактор, вы оказываетесь в командном режиме, где вы можете вводить команды
vi. Например, вы можете позиционировать курсор по буферу, удалять текст и переходить в режим ввода текста.Командный режим отличен от работы с shell, потому что:
Для отмены частично набранной команды пользуйтесь клавишей
<ESC>. Если вы введете неправильную команду, то вы получите какой-нибудь сигнал, зависящий от терминала, например, звуковой.Р
ежим ввода текстаЕсли вы вошли в режим ввода текста, то все, что вы набираете появляется в буфере, и вы видите это на экране.
РЕЖИМЫ РЕДАКТОРА
viКомандный режим: здесь вы вводите команды vi
Добавление нового текста
Переход из командного режима в режим ввода и добавления текста производится в три шага.
ДОБАВЛЕНИЕ НОВОГО ТЕКСТА
ПРИМЕР 1
: Введите текст в новый файл first.file. Напечатайте указанные ниже строки (нажимая <RET> только в указанных местах).a
Это мой первый файл.<RET>Я не собираюсь набирать много слов.
<RET>Самое главное - то, что я набираю текст.
<ESC> Это мой первый файл.
Я не собираюсь набирать много слов.
Самое главное - то, что я набираю текст.
Сохранение файла и выход из редактора
Для того, чтобы переписать буфер в файл, и выйти из vi, вернувшись к приглашению $, наберите ZZ. Это называется shift-z-z (заглавная буква "z" дважды). Система записывает файл на диск, выходит из vi и выводит приглашение $.
СОХРАНЕНИЕ ФАЙЛА И ВЫХОД ИЗ РЕДАКТОРА
ПРИМЕР 1
: Записать файл first.file и выйти из редактора. Наберите следующую команду:ZZ
Это мой первый файл.
Я не собираюсь набирать много слов.
Самое главное - то, что я набираю текст.
Редактирование существующего файла
Для того, чтобы войти в vi и начать редактировать уже существующий файл, наберите vi и имя файла. Сначала vi выводит на экран имя файла и количество строк и символов в нем, а затем к этому сообщению добавляется первая страница файла.
РЕДАКТИРОВАНИЕ СУЩЕСТВУЮЩЕГО ФАЙЛА
ПРИМЕР 1: Отредактируйте файл wacky, набрав:
$ vi wacky<RET>
РАДУГА
Каждый
Охотник
Желает
Знать
Где
Сидит
Фазан.
АЛФАВИТ
А - арбузы,
Б - бананы,
В - вишня,
Г - груши,
Д - дыни,
Е - ежевика,
Ж - желуди,
З - зелень,
И - ирис,
К - клубника,
Л - лук,
М - малина,
Н - нарцисс,
О - огурцы,
П - помидоры,
Перемещение курсора
Перед началом редактирования вы должны переместить курсор туда, где вы хотите изменять или добавлять текст. Командный режим имеет множество способов передвигать курсор. Например:
- Нажмите пробел
- Нажмите стрелку вправо
- Наберите букву
Передвинуть курсор на одну позицию влево:
- Нажмите клавишу <BACKSPACE>
- Нажмите стрелку влево
- Наберите букву
Передвинуть курсор на одну строку вниз:
- Нажмите стрелку вниз
- Наберите букву
Курсор передвигается в ту же позицию следующей строки - если это, конечно, возможно. Если в этой позиции НЕТ символа - то
vi ставит курсор в конец более короткой строки, но запоминает его исходное место. И если вы передвинете курсор еще на одну строку вниз и в той строке будет символ в исходной позиции - курсор встанет именно на нее.Эти две команды перемещают курсор на первый символ в последующей строке, а не на первую позицию строки.
Передвинуть курсор на одну строку вверх:
- Нажмите стрелку вверх
- Наберите букву
Вы можете также передвигать курсор сразу на несколько символов или строк. Для этого нужно перед командой указать число символов или строк. Например,
3l передвигает курсор на три символа вправо; 4<стрелка вниз> - на четыре строки вниз.ПЕРЕМЕЩЕНИЕ КУРСОРА
ЧТОБЫ ПЕРЕДВИНУТЬ КУРСОР НАЖМИТЕ КЛАВИШУ:
Перемещение по словам
Вы можете перемещать курсор не только на один символ за одно нажатие клавиши, но и на одно слово.
vi считает словом набор букв или цифр отделенный от других пробелами или знаками препинания.Чтобы передвинуть курсор на одно слово за нажатие:
- Буква
- Буква
e - передвинуться на конец слова- Буква
b - передвинуться на начало предыдущего словаЧтобы передвинуть курсор на одно слово за нажатие, игнорируя пунктуацию:
- Буква
- Буква
E - передвинуться на конец слова- Буква
B - передвинуться на начало предыдущего словаВы можете также передвигать курсор сразу на несколько слов за одно нажатие. Для этого нужно перед соответствующей командой указать число слов, на которое вы хотите переместить курсор. Например,
3w передвигает курсор на начало третьего слова вправо.ПЕРЕМЕЩЕНИЕ ПО СЛОВАМ
ЧТОБЫ ПЕРЕДВИНУТЬ КУРСОР НАЖМИТЕ КЛАВИШУ:
ИГНОРИРУЯ ПУНКТУАЦИЮ
Перемещение по строкам
Ниже приведены некоторые команды, благодаря которым вы сможете быстрее передвигаться по строкам.
Переместиться на первый символ текущей строки - нажмите ^.
Если перед первым символом строки стоят пробелы или табуляции, то для перемещения в ее начало нажмите 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>, закончив набор.ВСТАВКА ТЕКСТА
≈
≈
добавить текст после курсора: a≈
вставить новую строку ниже курсора: o≈
вставить новую строку выше курсора: OПРИМЕР 1
: В файл wacky вставьте текст и новые строки. Буквы в <...> не появляются на экране.Переместите курсор в начало пятой строки и напечатайте:
i
Когда и <ESC>o
И как давно<ESC>Переместите курсор в первую строку и напечатайте:
O
ПРОСТО ФАЙЛ<ESC>
ПРОСТО ФАЙЛ
РАДУГА
Каждый
Охотник
Желает
Знать
Когда и Где
И как давно
Сидит
Фазан.
АЛФАВИТ
А - арбузы,
Б - бананы,
Удаление текста
Вы можете перемещать или удалять символы, слова и строки.
Чтобы удалить символ, установите на нем курсор и
Отмена изменений
Команда
u отменяет команду, выполненную последней. Нажав u вторично, вы вернете строку в исходное состояние (отмена отмены).Если вы совершили несколько изменений строки и НЕ ПЕРЕМЕЩАЛИ курсор на другую строку, то вы можете вернуть эту строку в исходное состояние, набрав
U.УДАЛЕНИЕ ТЕКСТА
Удалить один символ:
x
Выводы урока
Вызов редактора vi: vi имя_файла<RET>
Командный режим: режим ввода команд vi
Режим ввода текста: то, что вы набираете, идет в главный буфер
Переход в режим ввода текста и добавление текста:
Запись содержимого буфера в файл и выход из vi: ZZ
Редактирование файла: vi имя_файла<RET>
Перемещение курсора в нужное вам место
Вставка текста
Удаление текста
Упражнение 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 Ассоциации охотников г.Аббатова
Поиск, изменение и перемещение текста
Цели
Поиск по образцу
Строкой текста, используемой как образец, может являться любая последовательность символов. При редактировании больших файлов может понадобиться такая функция
vi как поиск по образцу. Поисковый образец в редакторе vi не может превышать одну строку текста.Вы можете вести поиск вперед и назад по всему буферу, начиная от курсора.
≈ Наберите
После того, как вы нажмете /, курсор переместится вниз экрана - там вы сможете набрать образец. После того, как вы его наберете и нажмете
<RET>, курсор возвращается на исходную позицию. Поиск начинается с символа, стоящего справа от курсора. Если vi не находит образец до конца файла, то поиск автоматически продолжается с начала файла вплоть до места начала поиска. Если поиск завершен успешно, курсор останавливается на первом символе образца. Если же нет, то появляется сообщение "Pattern not found" (Образец не найден).Наберите
Поиск начинается с символа, стоящего слева от курсора, и продолжается по необходимости с конца буфера.
Повтор поиска:
Найти следующий образец - нажмите
Продолжить поиск в обратном направлении - нажмите
NПОИСК ПО ОБРАЗЦУ
ПРИМЕР 1: Поиск по образцу вперед и назад в файле
check.paint.vi check.paint<RET>
/
рога<RET> vi ищет слово "рога" в направлении впередn
?
копыт<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
: Измените собирал на собираюсь.
Субботний вечер,
Замена слов
Команда
cw заменяет слова. Как и в случае команды s, vi автоматически переводит вас в режим ввода текста для набора новых слов.Чтобы изменить одно слово, передвиньте курсор на его начало и
Напечатайте cw, а затем новое слово, после чего нажмите <ESC>.
Чтобы изменить несколько слов, укажите их количество перед буквами cw. Например, 5cw позволяет вам заменить пять слов.
ЗАМЕНА СЛОВ
ПРИМЕР 1:
Измените грязный носок на галстук "шнурок".Поставьте курсор на букву г слова грязный и наберите: 2cwгалстук "шнурок"
<ESC>. Грязный носок превратился в галстук "шнурок".Субботний вечер,
Замена строки на новую
Команда
cc меняет строку текста. Курсор может стоять в любом месте строки, которую вы меняете. После этой команды vi переключается в режим ввода текста, где вы можете набрать новую строку (строки).Чтобы заменить строку текста, поставьте курсор на нее и
Напечатайте cс, а затем новую строку, после чего нажмите <ESC>.
Чтобы изменить несколько строк, укажите их количество перед буквами cc. Например, 3cc позволяет вам заменить три строки текста.
ЗАМЕНА СТРОКИ НА НОВУЮ
ПРИМЕР 1
: Измените В холодильнике моем на На улице стоит.Поставьте курсор на слово В и наберите:
ccНа улице стоит<ESC>.Субботний вечер,
Разбиение и соединение строк
Когда вы разбиваете строку,
vi заменяет символ, стоящий над курсором на символ новой строки <RET>.Когда же вы соединяете две строки или более,
vi заменяет <RET> на один пробел (между словами) или на два пробела (между предложениями).РАЗБИЕНИЕ И СОЕДИНЕНИЕ СТРОК
ПРИМЕР1
: Разбейте и соедините строки.Поставьте курсор на пробел между словами Пойти и потанцевать и наберите:
Переместите курсор на строку Я собираюсь и наберите:
Субботний вечер,
Перемещение текста: команда put
Часто вам бывает нужно передвинуть текст в файле с одного места на другое. Вам не придется удалять этот текст, а потом набирать его заново в другом месте, если вы воспользуетесь командой
put.Каждый раз, когда вы удаляете текст,
vi убирает его из главного буфера, но не уничтожает его совсем, а помещает его в безымянный буфер (unnamed buffer). Этот буфер существует отдельно от главного буфера, содержащего копию редактируемого вами файла.Команда
put помещает содержимое безымянного буфера обратно в файл двумя способами:p
размещает содержимое безымянного буфера СПРАВА от курсора или СНИЗУ от текущей строки.P
размещает содержимое безымянного буфера СЛЕВА от курсора или СВЕРХУ от текущей строки.Перемещение текста осуществляется в три этапа:
1. Удалить текст одной командой.
Ниже приведен результат Примера 1
Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги с ночи до утра.
Ведь я люблю буги-вуги.
ПЕРЕМЕЩЕНИЕ ТЕКСТА: КОМАНДА put
1. Удалить текст одной командой.
2. Передвинуть курсор туда, куда нужно вставить этот текст.
3. Нажать
p или P.ПРИМЕР 1
: Передвинуть строку "Я собираюсь Пойти потанцевать".Поместите курсор на этой строке и наберите:
dd vi
помещает эту строку в безымянный буфер.Переместите курсор на строку "И вот опять" и наберите:
p
удаленная ранее строка появится под курсором.Примеры применения команды put
Безымянный буфер содержит текст, удаленный последним. Если вы удаляете другую часть текста, то
vi переписывает безымянный буфер заново.ПРИМЕРЫ ПРИМЕНЕНИЯ КОМАНДЫ
putПРИМЕР 1
: Безымянный буфер переписывается заново при удалении другого текста.
В строке Буги-вуги с ночи до утра поставьте курсор на слово с и наберите:
Поместите курсор на пробел перед словом утра и наберите:
Примеры применения команды put (продолжение)
Команда
put копирует текст, находящийся в безымянном буфере, столько раз, сколько вы наберете p. Смотрите Пример 2 на следующей странице.ПРИМЕРЫ ПРИМЕНЕНИЯ КОМАНДЫ put
ПРИМЕР 2
: Копирование содержимого безымянного буфера несколько раз подряд.
Поместите курсор на вторую букву а в слове жара и наберите:
Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жараа,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.
Копирование текста
При перемещении текста вы удаляете его в одном месте, а затем добавляете в другом. При копировании исходный текст остается там, где он есть, а его копия добавляется в файл в другом месте.
Команда
yankКоманда
yank (y) записывает текст в безымянный буфер, НЕ УДАЛЯЯ его из главного буфера. Записав текст, вы вставляете его в нужное вам место командой put.Копирование текста осуществляется в три этапа:
1. Запишите текст в безымянный буфер одной командой. Вы можете не увидеть результат этой команды на экране.
2. Поместите курсор туда, куда вы хотите скопировать текст.
3.
Наберите p или P, чтобы скопировать содержимое буфера.КОМАНДА
yankПеремещение Копирование
1.удалить 1.записать в безымянный буфер
2.передвинуть курсор 2.передвинуть курсор
3.
ПРИМЕР 1
: Скопировать строку Ведь я люблю буги-вуги.Поместите курсор на эту строку и наберите:
yy
vi записывает строку в безымянный буфер.
Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужансая жара,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Перестановка символов командой xp
Команда
xp переставляет два символа местами.Команда
x удаляет символ в текущей позиции курсора. Команда p копирует безымянный буфер ВПРАВО от курсора. Команда xp комбинирует эти две команды.Команда
x удаляет символ в текущей позиции курсора и записывает его в безымянный буфер. Команда p вставляет этот символ справа от курсора.Чтобы переставить местами два символа, переместите курсор на первый из них и
ПЕРЕСТАНОВКА СИМВОЛОВ КОМАНДОЙ xp
ПРИМЕР 1
: Переставить две буквы в слове Ужансая.Поставьте курсор на букву н и наберите:
Строка приняла вид Ужасная жара.
ZZ
$
Субботний вечер,
И вот опять
Я собираюсь Пойти потанцевать.
Я надеваю штиблеты
И галстук "шнурок",
Я запираю свою дверь
На висячий замок.
На улице стоит
Ужасная жара,
Но я буду танцевать
Буги-вуги до утра.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Ведь я люблю буги-вуги.
Выводы урока
Упражнение 3.2.А
А. Войдите в каталог
unit3 вашей директории. Выведите на экран его содержание и найдите файл под именем poem. Выполните указанные ниже упражнения на редактирование этого файла. В конце упражнения находится копия файла poem с указанной нумерацией строк. Использование ее облегчит вашу работу.1. Вызовите
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Редактор
vi, о котором рассказывается в этом разделе, - это экранно-ориентированный редактор, доступный в системе UNIX. Также доступен и другой редактор - ex, строко-ориентированный редактор, который вы можете использовать как наряду с vi, так и отдельно от него.Редактор
vi имеет такие экранно-ориентированные возможности, как изменения текста в позиции курсора. Редактор ex, напротив, обеспечивает глобальные команды для работы с файлом. Он подобен ed, стандартному строковому редактору ОС UNIX. Строковый редактор способен на:Редактор
ex имеет несколько полезных команд, дополняющих vi. Вы вводите все команды ex в той же командной строке. Командная строка редактора ex:После того, как вы набираете двоеточие, курсор перемещается вниз экрана в командную строку
ex. После того, как вы набрали команду и нажали <RET>, курсор возвращается в исходную позицию.РЕДАКТОР
exex
: строко-ориентированный текстовый редактор ОС UNIX ≈ глобальные измененияКомандная строка редактора
ex: работает в командном режимеСохранение буфера и выход из
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
$
Имя
Команда замены
Команда замены позволяет проводить замену последовательности символов на новую. Формат команды замены:
:n,m
s/образец/новый образец/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
Входное имя
Профессия
Место работы
Рабочий телефон
Копирование файла в буфер
Чтобы скопировать файл в буфер, выполните команду
: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
Имя
Адрес
Город
Область
Индекс
Домашний телефон
Входное имя
Профессия
Место работы
Рабочий телефон
Выполнение команд ОС UNIX внутри
viНаходясь в
vi, вы можете выполнять те команды, которые вы вводите на приглашение $.Обновление экрана
Команда
<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
Имя
Адрес
Город
Область
Индекс
Домашний телефон
Входное имя
Профессия
Место работы
Рабочий телефон
Установка опций
Вывод на экран нумерации строк командой
: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
Вывод на экран режима работы командой :
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>
$
Имя :set nosmd |
Выводы урока
Упражнение 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
КОНВЕКЦИЯ
Жидкости и газы обычно нагревают снизу. Чайник с водой ставят на огонь, радиаторы отопления помещают около пола. Случайно ли это?
Поместив руку над горячей грелкой или над горящей лампой , мы почувствуем, что от грелки или лампы наверх поднимаются теплые струи воздуха. Эти струи могут даже вращать небольшую бумажную вертушку, помещенную над лампой. Здесь мы наблюдаем вид такой теплопередачи, который называют конвекцией.
При конвекции энергия переносится самими струями газа или жидкости. Воздух, который соприкасается с грелкой или лампой, нагревается от ее поверхности и расширяется. Плотность расширившегося воздуха меньше, чем плотность холодного, и поэтому слой теплого воздуха всплывает в холодном воздухе. Ведь архимедова сила, действующая на теплый воздух со стороны холодного снизу наверх, больше, чем сила тяжести, действующая на теплый воздух, направленная вниз. Затем прогревается и начинает двигаться наверх следующий слой холодного воздуха и т.д.
Конвекция происходит в наших жилых комнатах, благодаря чему воздух в них нагревается. Воздух вблизи потолка комнаты теплее, чем вблизи пола. Это можно проверить, помещая комнатный термометр в верхнюю и нижнюю части комнаты.