Работа с текстом на максимальной 7 7инзодвыахнгилеав о Vim скорости и мощностиИзучаем vi иVim редакторы Арнольд Роббинс, Элберт Ханна и Линда Лэмб
Learningthe vi and Vim Editors Seventh Edition Arnold Robbins, Elbert Hannah and Linda Lamb
Изучаем редакторы vi и Vim Седьмое издание Арнольд Роббинс, Элб ерт Ханн а и Линда Лэмб Санкт-Петербург – Москва 2013
Арнольд Роббинс, Элберт Ханна и Линда ЛэмбИзучаем редакторы vi и Vim, 7-е изданиеПеревод И. АввакумоваГлавный редактор А. ГалуновЗав. редакцией Н. МакароваНаучный редактор Редактор В. СиницынКорректор Ю. БочинаВерстка С. Беляева Д. ОрловаРоббинс А., Ханн а Э., Лэмб Л.Изучаем редакторы vi и Vim, 7-е издание. – Пер. с англ. – СПб.: Символ-Плюс,2013. – 512 с., ил.ISBN 978-5-93286-200-1На протяжении 30 лет vi оставался стандартом для UNIX и Linux, а эта книг абыла главным пособием по vi. Однако сейчас UNIX уже не тот, что был 30 летназад, и книга тоже не стоит на месте. Седьмое издание существенно расш ирено и включает подробную информацию о Vim – самом популярном клоне vi.Доступный стиль изложения сделал эту книгу классикой. Она незаменима, поскольку знание vi или Vim – обязательное условие, если вы работаете в Linuxили UNIX.Вы познакомитесь как с основами, так и с продвинутыми средствами, так ими как интерактивные макросы и скрипты, расширяющие возможности редактора. Вы научитесь быстро перемещаться в vi, использовать буферы, применять глобальную функцию поиска и замены vi, настраивать vi и запускатьком анды UNIX, использовать расширенные текстовые объекты Vim и мощныерег улярные выражения, редактировать в нескольких окнах и писать скриптыв Vim, использовать все возможности графической версии Vim (gvim), приме-нять такие усовершенствования Vim, как подсветка синтаксиса и расширен-ные теги. Помимо Vim рассматриваются и другие клоны vi: nvi, elvis и vile.ISBN 978-5-93286-200-1ISBN 978-0-596-52983-3 (англ) © Издательство Символ-Плюс, 2013 Authorized Russian translation of the English edition of Learning the vi and Vim Editors, Seventh Edition ISBN 9780596529833 © 2008 O’Reilly Media, Inc. All rights reserved. This translation is published and sold by permission of O’Reilly Media, Inc., the owner of all rights to publish and sell the same. Все права на данное издание защищены Законодательством РФ, включая право на полное или час тичное воспроизведение в любой форме. Все товарные знаки или зарегистрированные товарные зна ки, упоминаемые в настоящем издании, являются собственностью соответствующих фирм. Издательство «Символ-Плюс». 199034, Санкт-Петербург, 16 линия, 7, тел. (812) 380-5007, www.symbol.ru. Лицензия ЛП N 000054 от 25.12.98. Подписано в печать 12.12.2012. Формат 70×100 1/16. Печать офсетная. Объем 32 печ. л.
Посвящается моей жене Мириамза любовь, терпение и поддержку. Арнольд Роббинс (шестое и седьмое издания)
ОглавлениеПредисловие����������������������������������������������������������������������������������������������������� 10I. Базовый и продвинутый vi �����������������������������������������������������������������������19Часть 1. Текстовый редактор vi �������������������������������������������������������������������������21 Глава Краткая историческая справка�������������������������������������������������������������������24 Открытие и закрытие файлов ���������������������������������������������������������������������25 Выход без сохранения правок ���������������������������������������������������������������������29 2. Простое редактирование�������������������������������������������������������������������32 Глава Команды vi�����������������������������������������������������������������������������������������������������32 Перемещение курсора�����������������������������������������������������������������������������������33 Простая правка текста ���������������������������������������������������������������������������������37 Другие способы вставки текста�������������������������������������������������������������������50 Объединение двух строк с помощью J �������������������������������������������������������52 Обзор основных команд vi ���������������������������������������������������������������������������53 3. Быстрое перемещение �����������������������������������������������������������������������55 Глава Перемещение по экранам�����������������������������������������������������������������������������55 Перемещение по текстовым блокам �����������������������������������������������������������59 Перемещение по результатам поиска���������������������������������������������������������60 Перемещение по номеру строки�������������������������������������������������������������������64 Обзор команд перемещения курсора в vi���������������������������������������������������65 4. За рамками основ���������������������������������������������������������������������������������67 Глава Другие сочетания команд�����������������������������������������������������������������������������67 Варианты запуска vi�������������������������������������������������������������������������������������68 Использование буферов��������������������������������������������������������������������������������71 Отметка места�������������������������������������������������������������������������������������������������73 Другие продвинутые команды редактирования��������������������������������������� 74 Обзор команд vi для работы с буфером и метками����������������������������������� 74 5. Введение в редактор ex�����������������������������������������������������������������������75 Глава Команды ex�����������������������������������������������������������������������������������������������������76 Редактирование в ex �������������������������������������������������������������������������������������78 Сохранение и выход���������������������������������������������������������������������������������������84 Копирование одного файла в другой�����������������������������������������������������������86 Редактирование нескольких файлов ���������������������������������������������������������87
Оглавление 7 6. Глобальная замена�������������������������������������������������������������������������������91 Глава Подтверждаем замены ���������������������������������������������������������������������������������92 Замена, зависящая от контекста�����������������������������������������������������������������93 Поиск по шаблону �����������������������������������������������������������������������������������������94 Примеры использования шаблонов����������������������������������������������������������� 102 Финальный взгляд на шаблоны ��������������������������������������������������������������� 110 7. Продвинутое редактирование ������������������������������������������������������� 116 Глава Настройка vi������������������������������������������������������������������������������������������������� 117 Вызов команд UNIX ����������������������������������������������������������������������������������� 121 Сохранение команд������������������������������������������������������������������������������������� 124 Использование скриптов ex����������������������������������������������������������������������� 137 Редактирование исходного кода программы������������������������������������������� 143 8. Представляем клоны vi��������������������������������������������������������������������� 149 Глава Знакомьтесь: Даррелл, Даррелл и Даррелл��������������������������������������������� 149 Многооконное редактирование����������������������������������������������������������������� 151 Графические интерфейсы��������������������������������������������������������������������������� 152 Расширенные регулярные выражения����������������������������������������������������� 152 Улучшенные теги����������������������������������������������������������������������������������������� 154 Улучшенные возможности������������������������������������������������������������������������� 160 Помощь программисту������������������������������������������������������������������������������� 165 Итоги: сравним редакторы������������������������������������������������������������������������� 167 Ничто не сравнится с оригиналом������������������������������������������������������������� 167 Перспектива������������������������������������������������������������������������������������������������� 168II. Vim ����������������������������������������������������������������������������������������������������������������� 169Часть 9. Vim (vi Improved): введение ������������������������������������������������������������� 171 Глава Обзор ������������������������������������������������������������������������������������������������������������� 172 Где взять Vim����������������������������������������������������������������������������������������������� 177 Как установить Vim в UNIX и GNU/Linux����������������������������������������������� 178 Установка Vim в окружении Windows ����������������������������������������������������� 183 Установка Vim в окружении Macintosh ��������������������������������������������������� 183 Другие операционные системы����������������������������������������������������������������� 184 Помощь и упрощения для новичков��������������������������������������������������������� 185 Итог��������������������������������������������������������������������������������������������������������������� 185 10. Главные улучшения Vim по сравнению с vi������������������������������� 187 Глава Встроенная справка������������������������������������������������������������������������������������� 187 Варианты запуска и инициализации������������������������������������������������������� 189 Новые команды перемещения������������������������������������������������������������������� 196 Расширенные регулярные выражения����������������������������������������������������� 198 Сборка исполняемого файла под конкретные задачи����������������������������� 201 11. Многооконность в Vim ���������������������������������������������������������������������202 Глава Инициализация многооконного сеанса���������������������������������������������������203 Открытие окон���������������������������������������������������������������������������������������������206 Перемещение по окнам (движение курсора между окнами)�����������������209 Перемещение окон��������������������������������������������������������������������������������������� 211
8 Оглавление Изменение размера окна����������������������������������������������������������������������������� 213 Буферы и их взаимодействие с окнами ��������������������������������������������������� 217 Теги и окна��������������������������������������������������������������������������������������������������� 221 Редактирование с вкладками ������������������������������������������������������������������� 222 Закрытие и выход из окон �������������������������������������������������������������������������223 Итог ��������������������������������������������������������������������������������������������������������������� 224 12. Скрипты Vim����������������������������������������������������������������������������������������� 225 Глава Какой ваш любимый цвет? ����������������������������������������������������������������������� 225 Динамическая конфигурация типов файлов при помощи скриптов���������������������������������������������������������������������������������236 Дополнительные соображения, касающиеся скриптов Vim����������������� 245 Ресурсы��������������������������������������������������������������������������������������������������������� 250 13. Графический Vim (gvim)������������������������������������������������������������������� 251 Глава Общее введение в gvim ������������������������������������������������������������������������������� 252 Настройка полос прокрутки, меню и панелей инструментов��������������� 257 gvim в Microsoft Windows �������������������������������������������������������������������������269 gvim в X Window System ���������������������������������������������������������������������������269 Опции GUI и обзор команд�������������������������������������������������������������������������269 14. Улучшения Vim для программистов������������������������������������������� 272 Глава Свертка и контуры (режим контуров) ����������������������������������������������������� 273 Автоматические и умные отступы �����������������������������������������������������������284 Ключевые слова и завершение слов по словарю �������������������������������������293 Стеки тегов���������������������������������������������������������������������������������������������������302 Подсветка синтаксиса���������������������������������������������������������������������������������305 Компиляция и поиск ошибок в Vim ��������������������������������������������������������� 314 Заключительные соображения о написании программ������������������������� 319 15. Другие полезности в Vim�����������������������������������������������������������������320 Глава Редактирование двоичных файлов�����������������������������������������������������������320 Диграфы: не-ASCII символы ��������������������������������������������������������������������� 322 Редактирование файлов из других мест��������������������������������������������������� 324 Переход и смена каталогов�������������������������������������������������������������������������326 Резервные копии в Vim�������������������������������������������������������������������������������328 Создание HTML из текста���������������������������������������������������������������������������329 В чем разница?���������������������������������������������������������������������������������������������330 Отмена отмен ����������������������������������������������������������������������������������������������� 332 На чем я остановился? �������������������������������������������������������������������������������333 На какой я строке? �������������������������������������������������������������������������������������336 Сокращения команд и опций Vim�������������������������������������������������������������338 Несколько мелочей (не обязательно для Vim)�����������������������������������������339 Другие ресурсы �������������������������������������������������������������������������������������������340 III. Другие клоны vi ��������������������������������������������������������������������������������������� 341 Часть 16. nvi: новый vi�����������������������������������������������������������������������������������������343 Глава Автор и история�������������������������������������������������������������������������������������������343
Оглавление 9 Важные аргументы командной строки�����������������������������������������������������344 Онлайн-справка и другая документация�������������������������������������������������345 Инициализация������������������������������������������������������������������������������������������� 346 Многооконное редактирование�����������������������������������������������������������������346 Графические интерфейсы �������������������������������������������������������������������������348 Расширенные регулярные выражения�����������������������������������������������������348 Улучшения в редактировании�������������������������������������������������������������������349 Помощь программисту������������������������������������������������������������������������������� 352 Интересные функции ��������������������������������������������������������������������������������� 352 Исходный код и поддерживаемые операционные системы������������������� 353 17. elvis ���������������������������������������������������������������������������������������������������������354 Глава Автор и история�������������������������������������������������������������������������������������������354 Важные аргументы командной строки����������������������������������������������������� 355 Онлайн-справка и другая документация�������������������������������������������������356 Инициализация������������������������������������������������������������������������������������������� 356 Многооконное редактирование�����������������������������������������������������������������358 Графические интерфейсы���������������������������������������������������������������������������360 Расширенные регулярные выражения�����������������������������������������������������366 Улучшенные возможности редактирования�������������������������������������������366 Помощь программисту������������������������������������������������������������������������������� 371 Интересные особенности���������������������������������������������������������������������������� 374 Будущее elvis�����������������������������������������������������������������������������������������������380 Исходный код и другие операционные системы�������������������������������������380 18. vile: vi Like Emacs (vi как Emacs)�������������������������������������������������������382 Глава Авторы и история ���������������������������������������������������������������������������������������382 Важные аргументы командной строки�����������������������������������������������������383 Онлайн-справка и другая документация�������������������������������������������������384 Инициализация������������������������������������������������������������������������������������������� 386 Многооконное редактирование����������������������������������������������������������������� 387 Графические интерфейсы���������������������������������������������������������������������������389 Расширенные регулярные выражения�����������������������������������������������������398 Улучшенные возможности редактирования�������������������������������������������400 Помощь программисту������������������������������������������������������������������������������� 407 Интересные особенности���������������������������������������������������������������������������� 410 Исходный код и поддерживаемые операционные системы������������������� 417IV. Приложения����������������������������������������������������������������������������������������������� 419Часть A. Редакторы vi, ex и Vim����������������������������������������������������������������������� 421 Глава B. Установка опций ���������������������������������������������������������������������������������458 Глава C. Возможные проблемы����������������������������������������������������������������������� 479 Глава D. vi и Интернет�����������������������������������������������������������������������������������������483 ГлаваАлфавитный указатель������������������������������������������������������������������������������� 495
ПредисловиеРедакт ир ован ие текстов – одн а из наиб олее вост реб ованных зад ач в любой комп ью т ерн ой сист ем е, а vi – один из наиболее полезн ых станд артных текстов ых ред акторов. С пом ощ ью vi можно создав ать новые текстов ые файл ы или редакт ир овать имеющ иес я.Как и многие классичес кие программ ы, разр абот анн ые во врем ена становл ен ия UNIX, vi имее т реп ут ац ию сложной в управлен ии программы. Создав ая улучш енн ый клон vi под наз вание м Vim (от «vi improved»),Брам Мол ен ар (Bram Moolenaar) сделал мног ое, чтоб ы устр ан ить причин ы таког о впечатл ен ия. Vim содерж ит многоч исленные усовершенствов ания, виз уа льн ые подсказки и справ очн ую сист ему. Он стал, вер оятн о, самой поп улярной версией vi, поэтому в седьм ом изд ании этойкниг и ему посвящен о семь нов ых глав в части II «Vim». Однако сущ ес твует множ ес тво других клон ов vi, три из кот орых мы рассмотр им в час-ти III «Другие клон ы vi».План книгиКниг а разбита на 4 част и и состои т из 18 глав и 4 прилож ений.Часть I «Баз овый и продвин ут ый vi» пом ож ет быс тро нач ать работус vi, а такж е получ ить углубленные навыки, поз воляющ ие исп ольз овать его более эффективн о.В главе 1 «Текстовый ред акт ор vi» опис ыв аются некоторые простые команды vi, с кот орых можно начать знак омс тво с программ ой. Попрактик уйтесь в них, пока не освоит е дост аточн о хорошо. Глав а 2 «Простоеред акт ир ован ие» познак ом ит с нек от орыми элементарными инс тр умент ам и ред акт ирован ия.Одн ак о функц ион альные возможности vi вых одят далек о за рамкиобычной обр аботки текста. Больш ое разн оо бразие ком анд и опц ий позвол ит сок ратить сущ еств енную часть рут инн ой раб оты. В главе 3 «Быстрое пер ем ещение» и главе 4 «За рамк ам и осн ов» удел яетс я вним аниебол ее прос тым способам выполн ения зад ач. При перв ом чтении вы получите, по крайн ей мер е, предс тавл ение о возможнос тях vi и о том, какие ком анд ы можно прис пособить под ваши нуж ды. Впоследс тв ииможн о верн утьс я к этим глав ам для бол ее детальн ог о изуч ения.
Предисловие 11Глава 5 «Введен ие в ред актор ex», глава 6 «Глоб альн ая зам ен а» и гла-ва 7 «Продвин ут ое редакт ир ов ание» пос вящ ены средс твам, поз вол яющим пер ел ожить часть брем ен и редактир ов ан ия на плечи комп ью тер а.Вы поз нак омит есь со строковым редакт ор ом ex, лежащим в основ е vi,и узн аете, как из vi обращ аться к команд ам ex.Глава 8 «Представляем клоны vi» знак ом ит с расшир ениями, дост упным и в четырех клон ах vi. Здесь опис ываются мног оо конн ое ред актиров ание, графич еские инт ерфейс ы, расш иренн ые регул ярные выражения, функц ии, обл егчающие редакт иров ание, и некот ор ые другие особенн ости, тем сам ым пок аз ывая план оставшейс я части книг и. Кром етого, в этой главе есть ссылка на исходн ый код перв онач альн ого vi, котор ый может быть легк о скомп илир ован на соврем енных UNIX-сист емах (включая GNU/Linux).Часть II «Vim» описыв ае т Vim – наибол ее попул ярный на сег од няшнийдень клон vi.В глав е 9 «Vim (vi Improved): введение» дае тся общ ая инф орм ация о Vim,в том числ е, где взять бинарные версии для наибол ее поп улярных операц ио нн ых систем и каковы различные вар иа нты примен ения Vim.В глав е 10 «Главные улучш ен ия Vim по сравнен ию с vi» описыв аютсянаиб олее сущес тв енные улучш ения в Vim по сравнен ию с vi, такие каквстроенн ая справк а, управл ение иниц иал изацией, дополн ит ельн ые команды пер емещ ен ия и расширенные рег ул ярн ые выраж ения.Глава 11 «Многоо конность в Vim» удел яе т вним ан ие многоо конн ом у редактир ов анию, которое, возможно, явл яе тс я наибол ее знач имым дополнение м к стандартному vi. В главе расс матриваю тс я все подр обн ости созд ания и использован ия нескольких окон.В главе 12 «Скрипт ы Vim» рассматривается язык ком анд Vim, кот орыйпоз вол ит вам пис ать скрипты, чтоб ы прис пособить Vim под ваши нуж ды. Прос тота исп ольз ов ания Vim «из кор обки» во многом объя сн яе тсяогр омн ым кол ич еством скриптов, нап исанн ых друг им и польз ов ателями и включ енных в дистриб утив Vim.В главе 13 «Граф ичес кий Vim (gvim)» рассматрив ае тся Vim в сов рем енных граф ич еских окруж ения х, например тех, котор ые являю тся стандартными на сов ременн ых комм ерческих UNIX-сист ем ах, в GNU/Linuxи друг их UNIX-систем ах, а также в MS Windows.Глава 14 «Улучш ен ия Vim для прог рамм истов» сос ред оточена на исп ользов ан ии Vim в кач естве ред акт ор а для прог рамм истов, оставл яя за рамками его возможнос ти обычн ого редактир ования текс та. Особенно ценным и явл яю тс я функц ии сворач ив ания код а и ред актиров ан ия планов-схем, умные отс туп ы, подс ветка синтаксиса и уск орен ие цикла«ред акт ирован ие-комп иляц ия-отладка».Глава 15 «Друг ие полезности в Vim» является отч асти собир ательной,так как в ней охватывае тся множ ество интер есн ых воп рос ов, не вошедших в предыдущие главы.
12 Предисловие Часть III «Другие клоны vi» посвящен а трем друг им поп улярн ым кло нам vi: nvi, elvis и vile. Глава 16 «nvi: нов ый vi», глава 17 «elvis» и глава 18 «vile: vi как Emacs» охв ат ыв ают различные клоны vi: nvi, elvis и vile. В главах обс ужд ае т ся, как исп ольз овать их расш ирен ия, и описыв аю тся особенн ос ти каж дого из них. Часть IV «Прилож ен ия» содержит пол езн ые справ очные материалы. В приложен ии A «Редакт оры vi, ex и Vim» пер ечисляются все ком анды vi и ex, отсорт ир ов анные по функц ия м. Кроме того, привод ится список команд ex в алф ав итном порядк е, а такж е нек отор ые ком анды vi и ex из Vim. Прилож ение B «Установка опций» содерж ит список опц ий команды set для vi и всех чет ырех его клонов. В приложении C «Возможн ые проб лем ы» обсуж даются возм ожные про блем ы при работ е с vi и его клонами, а такж е спос об ы их устр ан ен ия. В прил ож ен ии D «vi и Интернет» рассказ ывается о мест е, котор ое зани мае т vi в более широк ой культуре UNIX и Инт ерн ета.Способ представления материала Наша задач а – дать хор ош ий обзор материала, который поможет но вичк ам изучить vi. Осв оен ие нов ог о ред актор а, особенн о редакт ора со всем и возм ожн остями vi, может пок азатьс я неп рео дол им ой задачей. Мы сделали поп ытку предс тавить основные концепции и ком анды в ло гичн ой и удоб оч итаем ой форм е. После изложения общ их осн ов vi, прим еним ых везде, мы перех од им к более глубокому рассмотрению Vim. Карт ин у зав ершает обзор nvi, elvis и vile. Пос лед ующие разд елы описыв ают усл овн ые обоз нач ен ия, использ уемые в этой книг е.Обсуждение команд vi Здесь вы найд ет е кратк ое описание осн овной идеи, предшес твующ ее узк оспец иализ иров анным разд елам. Затем привод ятся примеры при мен ения этой ком анд ы в кажд ом конк ретном случ ае наряд у с ее опис а ние м и синтаксисом использ ования.Условные обозначения В опис ан ии синт аксис а и в прим ерах данн ые для ввода наб раны шриф том MonoCondensed. То же касае тся названий команд, имен файл ов и оп ций. Пер еменн ые (то есть то, что не будет ввод итьс я бук вальн о, а буд ет зам ен яться при вводе команд ы на нужн ое знач ение) наб раны курсивным MonoCondensed. Квадратные скобк и озн ач ают, что переменная являе тс я необязательн ой. Наприм ер, в строк е с синт акс исом:
Предисловие 13 vi [filename]filename будет заменено на реа льное имя файл а. Скобк и гов ор ят о том,что команда vi может выз ываться без указ ания имени файла. Самискобки вводить не над о.Некот орые примеры показывают рез ультат раб оты ком анд, ввод имыхв ком андной строке UNIX. В таких прим ерах то, что вы реально вводите, набран о шрифт ом MonoCondensed Bold, чтобы отл ичать это от отклик асистем ы. Нап рим ер: $ ls ch01.xml ch02.xml ch03.xml ch04.xmlВ примерах код а курсив обоз нач ае т комм ентар ий, котор ый ввод ить ненад о. В осн овн ом тексте курс ив ом выд ел ен ы специа льн ые терм ин ы либо то, на что след ует обр ат ить вним ан ие.Следуя общ епринят ым сог лаш ен ия м по док ум ентац ии UNIX, ссылк ивид а printf(3) указ ывают на электронное справочн ое руков од ство (которое можн о получ ить посредством ком анд ы man). Этот пример ссылаетсяна страниц у функции printf() в разд еле 3 этого руковод ства (в большинс тв е сист ем нужн о ввести man 3 printf, чтобы увид еть ее).КлавишиНа прот яжении всей книг и вы встретите таблицы, сод ержащ ие команды vi и результаты их работы:Клав иш и Результ ат ыZZ \"practice\" (New file) 6 lines, 320 characters Введите команду выхода с сох ран ение м – ZZ. Ваш файл буд ет со хранен как обычн ый файл UNIX.В этом пример е ком анд а ZZ прив еден а в лев ом столбц е. В рамк е справасодержится строк а (или нес колько строк) экран а, пок азывающая результ ат выполн ен ия команды. Пол ожение курсора пок аз ано инв ерс ие йфона и цвет а симв ол ов. В этом случ ае, поскольку ZZ сох раняет файли вых од ит из программы, пос ле зап иси файла вы увидит е строк у состоян ия; полож ен ие курсор а не пок аз ано. Под рамк ой распол оженообъя сн ение ком анды и ее результат а.Иног да к команд ам vi обр ащ аю тс я при помощ и одн овременного наж атия клав иш и CTRL с друг ой клав иш ей. В осн овном тексте такая комбинац ия клавиш обычно запис ывается так: CTRL-G. В прим ер ах кодав так их случ ая х пер ед название м клав иш и ставят знак вставк и (^), например ^G означае т, что при нажат ии на G нужно удержив ать нажатойклавиш у CTRL.
14 ПредисловиеВозможные проблемы В тех разд елах, где у вас могут возникнуть затруднения, содержится переч ень возможных ошибок при вып олнении тех или иных задач. Вы мож ете просмотр еть эти ошибк и и верн утьс я к ним, когда столкн ет есь с под обн ой проблемой на практик е. Чтоб ы упрос тить доступ к перечню возм ожных ошиб ок, они прив едены такж е в прил ож ении С.Что нужно знать Мы полаг аем, что вы уже проч ли «Learning the Unix Operating System» (O’Reilly) или как ое-ниб удь друг ое введ ение в UNIX. Вы должны знать, как: • осущ ес твлять вход в сист ему и вых од из нее; • ввод ить ком анды UNIX; • мен ять каталоги; • выв од ить спис ок файлов в кат ал ог е; • создавать, копировать и удал ять файлы. Знакомство с grep (global search program, программ а глобального пои с ка) и симв олам и подстановки также будет пол езн ым.Замечания и вопросы Свои замечан ия и воп рос ы по этой книг е отправляйт е, пож ал уйс та, из дат ел ю: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 800-998-9938 (in the United States or Canada) 707-829-0515 (international or local) 707-829-0104 (fax) Технич ес кие воп росы и замечан ия о книг е присылайте на электронн ый адрес: [email protected] Веб-сайт этой книги содерж ит пример ы, список ошибок и план ы буду щих изд ан ий. Стран иц а располаг аетс я по адр есу: http://www.oreilly.com/catalog/9780596529833 Для получен ия доп олнит ельн ой инф орм ац ии о наш их книг ах, конфе ренц ия х, программн ых прод укт ах, информ ационн ых центрах и о сет и O’Reilly Network посетите наш веб-сайт: http://www.oreilly.com
Предисловие 15Safari® Books Online Если вы вид ит е значок Safari® Books Online на ваш ей люб им ой технической книг е, это озн ач ает, что книг а дост упн а онл айн посредством O’Reilly Network Safari Books helf. Safari предл агае т лучшее решен ие, неж ели элект ронн ые книги. Это виртуа льн ая библиот ек а, где вы мож ет е легко найти люб ую из тысяч техничес ких книг, коп ир ов ать и вставл ять фрагмент ы кода, скач ивать отдельные главы и быстро наход ить ответы, ког да вам нужн а сам ая точная и акт уальная инф орм ац ия. Попроб уйт е это бесплатн о на http:// safari.oreilly.com.О предыдущих изданиях В пят ом издан ии книг и под наз ван ием «Learning the vi Editor» ком ан ды ред актора ex рассматр ив ал ись бол ее подр обн о. В глав ах 5, 6 и 7 с по мощью больш ог о кол ич ес тва пример ов разъяснял ись сложн ые функ ции ex и vi в таких темах, как синтакс ис регул ярных выражений, гло бальн ые зам ен ы, файл ы .exrc, сокращ ения слов, отоб ражен ие клав иш и скрипты ред актиров ания. Несколько примеров было взято из журна ла «Unix World». Вальт ер Зинц (Walter Zintz) нап исал учебн ик о vi из двух част ей1, рассказ ывающ ий о нескольк их неизв естн ых нам вещах и содерж ащий множ ество грам отных прим еров, кот ор ые иллюс тр иру ют уже расс мотр енные нами функц ии. Рэй Шварц (Ray Swartz) в одн ой из своих заметок такж е под елилс я полезными совет ами2. Мы благодар ны им за идеи, изл оженные в этих мат ер иал ах. Шест ое изд ан ие «Learning the vi Editor» сод ерж ал о ознаком ительный обзор четырех дост упн ых «клонов», то есть ред актор ов со схож им и принципами работ ы. Мног ие из них содержал и улучшения по сравн е нию с vi. Следоват ельно, можно гов ор ить о сущ еств ов ан ии «семейства» редактор ов vi. Изд ан ие в равн ой степ ен и уделял о вним ан ие nvi, Vim, elvis и vile с целью познакомить чит ат еля с этими клон ам и. Также в шест ом изд ан ии было добавл ен о след ующее: • В осн овной текст внесены многочисл енные исп равления и доп олн е ния. • В конц е кажд ой глав ы прив ед ен а сводка соответств ующих ком анд.1 Две статьи Вальт ера Зинц а: «vi Tips for Power Users», Unix World, апр ель 1990 и «Using vi to Automate Complex Edits», Unix World, май 1990. (В при ложен ии D указ ан ы веб-адрес а этих статей.)2 «Answers to Unix», Unix World, авг уст 1990.
16 Предисловие • Новые главы, пос вящ енн ые каждом у из клонов vi, функц ии и/или расширения, общ ие для двух или бол ее клон ов, и многооконн ое ре дактир ование. • Глав ы, рассказ ывающие немног о об ист ории, цел ях, уник альн ых особенностях, способах установк и каждог о из клонов vi. • Нов ое приложен ие, где гов оритс я о месте vi в более шир окой культу ре UNIX и Инт ерн ет а.Предисловие к седьмому изданию Седьмое издан ие «Learning the vi and Vim Editors» сод ержит все луч шее от шест ого. Врем я показал о, что именн о Vim являе тс я сам ым попу лярным клоном vi, так что в этом издании обзор данн ог о ред акт ора су щес тв енно расш ирен (ему даж е отв ед ено место в назван ии книг и). Но чтоб ы книг а остав ал ась полезн ой для как можно большег о числа чит а телей, мы оставил и и обн ов или материал ы о nvi, elvis и vile.Что нового В этом издании поя вились следующие нов ые матер иалы: • Внесены исп равл ения в осн овн ом тексте. • Семь нов ых глав, в кот ор ых всестор онн е расс матр ив ае тс я Vim. • Матер иал про сов рем енн ое состояние nvi, elvis и vile. • Два прилож ения из пред ыдущ ег о издания, сод ерж ащ ие справку по ex и vi, были объе дин ены в одн о, кот орое теп ерь содерж ит еще и до полн ит ельн ые материал ы по Vim. • Обновлен ы другие прилож ен ия.Версии При тестир ован ии различн ых функций vi исп ольз овал ись следующ ие программ ы: • Верс ия vi для Solaris как наиболее близк ая к верс ии vi в UNIX. • Версия прог рамм ы nvi 1.79 Кейта Бостича (Keith Bostic). • Версия прог рамм ы elvis 2.2 Стив а Киркенд алл я (Steve Kirkendall). • Версия Vim 7.1 Брам а Мол енара (Bram Moolenaar). • Верс ия vile 9.6 Кевин а Бейтт нера (Kevin Buettner), Том а Дик и (Tom Dic key) и Пол а Фокс а (Paul Fox).
Предисловие 17Благодарности для шестого издания В первую очер едь благод арю свою жен у Мир иам за заботу о детях, пок а я работ ал над книгой, в особ енн ос ти во время «волш ебн ых час ов» непо средств енно перед обед ом. Я долж ен ей огромн ое кол ич еств о тиш ин ы и морож ен ог о. Пол Манн о (Paul Manno) из Техническог о колледжа комп ьют ерн ых технол огий Джордж ии (Georgia Tech College of Computing) оказал не оценим ую пом ощь в усм ир ен ии мои х прог рамм печати. Лен Мюлнер (Len Muellner) и Эрик Рэй (Erik Ray) из O’Reilly & Associates помог али с программами для SGML. Макрос vi, нап исанн ый Джерр и Пиком (Jer ry Peek), оказался бесценн ым. Хот я при подг отовке нового и исправлен ия стар ог о матер иала исп оль зовались все упом янут ые прог рамм ы, больш ая часть ред акт ир ов ан ия осущес тв л ял ась в Vim версий 4.5 и 5.0 под GNU/Linux (Red Hat 4.2). Я благ одарен Кейту Бост ич у (Keith Bostic), Стиву Киркендаллю (Steve Kirkendall), Браму Молен ару (Bram Moolenaar), Полу Фокс у (Paul Fox), Том у Дики (Tom Dickey) и Кев ин у Бейтт неру (Kevin Buettner), прове рявш им книг у и снабдившим меня важн ым и матер иалами для глав с 8 по 12 (номер а этих глав соотв етств ую т шест ому изданию). Без электричес тва, выр абатываемого энергет ич еской компан ией, раб о тать на компьютере нев озможно. Одн ак о когда электрич ество есть в ро зетк е, вы пер естаете дум ать о нем. Точн о так же и при нап исан ии кни- ги – без редактора у вас нич ег о не пол уч итс я, однак о когда он делае т свою работ у, о нем легк о заб ыть. Гиги Эст абр ук (Gigi Estabrook) из O’Reil ly – это прос то жемч уж ина. Работать с ней одн о удов ольс тв ие. Я выс око ценю все, что она дел ала и продолжае т делать для меня. И наконец, мног о благодарностей команде O’Reilly & Associates. Арн ольд Роббинс (Arnold Robbins) Ra’anana, Изр аиль, июнь 1998
18 ПредисловиеБлагодарности для седьмого издания И снов а Арнольд благодарит свою жену Мириа м за любовь и поддерж ку. Размер долга в виде тиш ин ы и морож еного продолжает раст и. Кро ме тог о, он благ одарен Дж.Д. «Илиаду» Фрейз ер у (J.D. «Illiad» Frazer) за прек расн ые комиксы User Friendly1. Элберт хотел бы поблаг од ар ить Анн у, Келл и, Бобби и свои х род ителей за проявленный инт ер ес к его работе в нел егкое время. Их энтузиазм был заразительным и бесц енн ым. Благ одар им Кейта Бостича (Keith Bostic) и Стив а Кирк ендалл я (Steve Kirk endall) за вклад в доработк у глав об их ред акт ор ах. Том Дики (Tom Dickey) внес знач ит ельн ый вклад в подгот овку главы о vile и табл ицы оп ций ком анд ы set в приложении B. Брам Мол енар (Bram Moolenaar), ав тор Vim, в этот раз такж е выполнил пров ерку всей книги. Роберт П. Дж. Дэй (Robert P.J. Day), Мэтт Фрай (Matt Frye), Юдит Майерс он (Judith Myerson) и Стив ен Фигг инс (Stephen Figgins) дали ценные замечан ия по всему текс ту. Арнольд и Элб ерт хотят поб лаг одарить Энди Ора (Andy Ora) и Изаб ель Кункл е (Isabel Kunkle) за редакторс кую работ у, а такж е всех сотрудн и ков O’Reilly Media. Арн ольд Роббинс (Arnold Robbins) Ноф Айал он, Израиль, 2008 Элб ерт Ханн а (Elbert Hannah) Килдир, Иллинойс, США, 2008 1 Есл и вы ничег о не слыш али о User Friendly, зайдит е на http://www.user friendly.org.
I Базовый и продвинутый vi Часть I.Часть I пом ож ет быс тро начать работ у с vi, а также пол уч ить угл убл енные нав ыки, позвол яющие исп ользовать vi более эффективн о. Материал охв ат ыв ае т ориг инальн ый баз ов ый vi, а расс матрив аемые команд ыможн о использ овать в любой его верс ии; послед ующ ие глав ы посвящ ены попул ярным клонам vi. Часть I сос тоит из следующ их глав:• Глав а 1 «Текс тов ый редакт ор vi»• Глава 2 «Простое ред акт иров ание»• Глава 3 «Быс трое перем ещ ен ие»• Глав а 4 «За рамк ам и осн ов»• Глав а 5 «Введение в редакт ор ex»• Глав а 6 «Глоб альн ая замен а»• Глав а 7 «Продвинутое ред акт иров ание»• Глав а 8 «Представляем клон ы vi»
1 Текстовый редактор vi Глава 1.UNIX1 содерж ит множ ес тво ред акторов, которые могут обрабатыватьтекстов ые файл ы, будь то файлы, содержащ ие данн ые, исходн ый кодили обычн ый текст. Таковым и являю тся, наприм ер, строк ов ые ред актор ы ed и ex, отоб ражающ ие на экр ане лишь одн у строк у из файл а. Кроме того, есть экранн ые ред акт ор ы, нап рим ер vi и Emacs, у кот орых наэкран е терм ин ал а отоб раж ае тся часть файла. Текс товые редактор ы, основанные на X Window System, также шир ок о дост упн ы и стан ов ятс явсе поп ул ярнее. Как в GNU Emacs, так и в его потомке XEmacs допускается исп ольз ован ие нескольких X-окон; двумя друг ими инт ер есн ым ивариантам и явл яю тс я ред акторы sam и Acme от Bell Labs. В Vim такжедост уп ен интерф ейс, основ анный на X.vi – это наиб олее полезный станд артный текс тов ый редакт ор в вашейсистеме. (vi – это сокращ ение от «visual editor», то есть визуальн ый редакт ор; прои зн ос итс я как «ви-ай». Это хор ошо проилл юстр ир овано нарис. 1.1.) В отл ичие от Emacs, он дост упен практ ич ески в неизменномвиде на люб ой сов ременной систем е UNIX, тем сам ым явл яя сь под об ием линг ва-франк а2 текс тов ого ред актир ов ания. То же можн о сказ ать1 В настоящ ее врем я термин «UNIX» включае т как коммерчес кие системы, выв еденные из оригин альн ой код ов ой базы UNIX, так и UNIX-под обные системы с доступн ым исходн ым кодом. Пример ам и перв ых явл яются Sola ris (хотя прое кт OpenSolaris прид ал ему некот орое «промежут очное» пол о жение в так ой схеме классификации. – Примеч. нау ч. ред.), AIX и HP-UX, а вторых представляют GNU/Linux и разноо бр азные системы, осн ованн ые на BSD. Сказ анное в этой книг е примен им о ко всем сист емам так ого типа, есл и нет специа льн ой огов орки.2 GNU Emacs стал унив ерс альной верс ие й Emacs. Единс тв енн ая проблем а в том, что он не являе тся стандартной частью большинс тва коммерч ес ких UNIX-систем, поэ том у его следуе т найт и и установить сам остоят ельно.
22 Глава 1. Текстовый редактор viпро ed и ex, одн ак о польз оватьс я экранными ред акт ор ами намного удобнее (нас тольк о удобн ее, что строк овые ред акт оры сейч ас практ ич ескине использ уются). В экр анном ред акторе можн о пролистывать страницы, пер емещать курс ор, удалять строки, вставл ять симв олы и мног оедругое, при этом вы сразу вид ите рез ульт ат своих действ ий. Экранныеред акт оры стал и популярн ым и благ одар я возм ожн ости внос ить изм енен ия при чтении файла, как если бы вы редакт ировали распечат анный экземпляр, тольк о быс тр ее.USER FRIENDLY by Illiad Copyright (c) 2000 Illiad http://www.userfriendly.org/ ИЗВИНИТЕ, МЭМ, СЛУШАЙТЕ, ЭТО ЭТО ТА САМАЯ НО Я НЕ ПОНИМАЮ, РЕДАКТОР \"ШЕСТЬ\". ДАМА, КОТОРАЯ ПРИВЕТ! НА МОЕЙ О ЧЕМ ВЫ ГОВОРИТЕ. ВАМ ИЗВЕСТНО, БЕСПОКОИЛАСЬ МАШИНЕ УСТАНОВЛЕН КАК ПИШЕТСЯ ИЗ-ЗА ТОГО, LINUX, НО Я НЕ ЗНАЮ, ШЕСТЬ РИМСКИМИ ЧТО МЫ КАК ИСПОЛЬЗОВАТЬ ЦИФРАМИ? ИСПОЛЬЗУЕМ РЕДАКТОР \"ШЕСТЬ\". СЕРВЕР ОХ, С \"ПАТЧАМИ\". РЕДАКТОР \"ШЕСТЬ\"? ВЫ ИМЕЕТЕ В ВИДУ \"VI\"?Рис. 1.1. Прои зн ос ит е vi правильноМногим нов ичкам vi каж етс я непон ятн ым и громоздким – вместо тог очтоб ы исп ользов ать комбинац ии клав иш для обработк и текс та и поз волить вам печат ать обычным обр азом, в этом редактор е кажд ой клавише наз начена своя команда. Ког да ожидаетс я выз ов ком анд ы нажат ием клав иш и, гов орят, что vi нах од ится в ком андн ом режиме (commandmode). Для тог о чтобы нач ать печ ат ать собс твенно текст на экран е, необх од имо перейт и в спец иа льный реж им вставк и (insert mode). След ует отмет ить, что в vi огр омн ое множ ес тв о команд.Однак о нач ав осв оен ие vi, вы обнар уж ите, что он хор ошо прод уман.Чтобы зас тав ить его выполнить сложную раб оту, пор ой дост ат очн о нескольких наж ат ий клавиш. По мер е дальн ейшего изуч ения vi вы узнаете комб инац ии клав иш, кот орые все больше и больш е работ ы по редактир ов ан ию будут пер едав ать компью т ер у, то есть туд а, где ей и мес то.vi (как и люб ой текстовый редактор) не являе тся текстовым процессором тип а «what you see is what you get» (что видишь, то и получишь).Есл и вам нужно созд ать отформат ир ованн ый док ум ент, то прид етс япис ать код ы, пон им аем ые другой прог рамм ой, которая и буд ет управлять вид ом печатаем ой коп ии. Так, есл и у нес кольк их абзац ев долж енбыть отс туп, поместит е спец иа льн ый код там, где нач инае тс я и заканчивае тс я отступ. Код ы форматир ования поз волят вам эксп ериментировать или менять внешн ий вид печатаемых файлов. Во многих случая хони даю т вам намного больше конт роля над внешн им вид ом док умент а,
23 нежели текс тов ый проц ессор. UNIX поддерж ив ае т пакет форм ат иров а ния troff1. Популярными и шир окод ост упным и альт ернат ив ами явл я ются издат ельские сист ем ы TEX и LATEX2. (В действ ит ельн ос ти, vi подд ержив ает простые механ измы форм атиро ван ия. Нап ример, он мож ет сам пер еносить слова при достиж ении кон ца строки или дел ать автом ат ич еские отс туп ы у новых строк. Кром е тог о, в Vim версии 7 есть авт омат ич ес кая пров ерка орф ографии.3) Как и при люб ой деятельнос ти, чем больш е вы ред акт ир ует е, тем быс т рее осв оите редактор и тем выш е будет ваша прои зв одительность. А ко гда вы изуч ит е все возможнос ти vi, то вряд ли захот ит е вернуться к «бол ее прос тым» редакт орам. В чем же заключ ае тся проц есс редакт ирован ия? Во-перв ых, вам мож ет понад об итьс я вставить (insert) текст (наприм ер, пропущенное или но вое слов о либо пропущенн ое предл ожен ие) или, нао борот, удал ить (dele te) текст (отд ельный симв ол или цел ый абз ац). Такж е должна быть воз можн ость мен ять (change) бук вы или слова (чтоб ы исп равить опечатки или изм енить термин). Возм ожн о, вам прид етс я пер ен ос ить (mov e) текст из одной части файл а в друг ую. Кроме того, пор ой требуетс я копи ров ать (copy) текст, чтоб ы создать его дубликат в другой части файла. В отлич ие от многих текс товых проц есс ор ов, изн ач альным реж им ом, или реж им ом «по умолч ан ию», в vi являе тс я командный режим, в кото ром сложн ые инт еракт ивн ые правк и можн о вып олнять наж ат ием всего лишь нес кольких клавиш. (А для вставки неф орматированн ого текста просто выполните любую из нескольк их ком анд «вставк и», после чего нач инайте набор.) В кач естве базовых ком анд исп ольз ую тся один или нес кольк о симв о лов. Нап ример: i вставк а (insert). cw изм ен ить слово (change word). 1 troff предназнач ен для лазерн ых принтеров и наборн ых маш ин и явл яе тся «брат ом-близн ецом» nroff – пак ет а форм ат ир ован ия для строчных принте ров и терм ин ал ов. Оба пон имают один и тот же наб ор ком анд. Следуя общ е принятом у в UNIX соглашению, мы наз ывае м troff оба пак ет а. В нас тоя щее время все, кто использ уе т troff, работ ают с его GNU-версией, groff. За бол ее подробн ой информацие й обр ат итесь на сайт http://www.gnu.org/soft war e/groff/. 2 Для пол учен ия информац ии о TEXи LATEX посетит е сайты http://www.ctan.org и http://www.latex-project.org соо тв етств енно. 3 Vim «из кор обки» также мож ет дел ать выключку текста по левому, прав о му краю или по центру. – Прим. нау ч. ред.
24 Глава 1. Текстовый редактор vi Исп ольз уя бук в ы в кач ес тве команд, вы сможете ред акт иров ать файл с огромн ой скорос тью. Вам необязат ельн о зап ом ин ать все соч ет ан ия функцион альных клавиш или раст яг ив ать пальц ы, чтоб ы наж ать не удобную комб инацию клав иш. Вам ник ог да не потребуе тся убирать ру ки с клав иатуры или пут аться в многоу ровневых мен ю! Мног ие ком ан ды можн о запомн ить по перв ым двум букв ам их наз ваний, и почти все ком анды следуют одинаков ым правилам и связ аны друг с друг ом. Воо бщ е говор я, ком анды vi: • Зависят от рег истр а клавиш и (проп исн ая и строчн ая буквы соотв ет ствую т разн ым командам: I – не то же, что i). • Не отоб раж аю тся на экр ан е, ког да их ввод ят. • Не требуют нажатия ENTER пос ле ввод а ком анды. Также есть групп а команд, котор ые отоб раж аются в нижн ей строк е эк рана. Они начинаются со специа льных симв олов. Косая черт а (/) и знак вопрос а (?) зап уск аю т команды пои ск а; об этом расс каз ано в главе 3. Все ком анды ex нач ин аютс я с двоеточия (:); они использую тся в строко вом ред акт оре ex. Этот ред акт ор дост уп ен при работе в vi, пос кольк у ex явл яетс я баз ов ым редакт ором, а vi – это прос то его «визуа льн ый» ре жим. Ком анд ы и понятия ex обс уж д аю тс я в главе 5, но уже в этой глав е вы узн ает е о команд е ex для вых од а из файл а без сохранения.Краткая историческая справка Перед пог руж ен ием во все тонк ости vi полезно пон ять, каким и глазами он «смотр ит» на ваш е окруж ение. В час тн ости, это помож ет осм ыслить каж ущиес я туманными сообщ ен ия vi об ошибк ах, а такж е разоб рать ся, наскольк о клоны vi развились по сравнен ию с ориг ин алом. vi восх од ит к тем врем ен ам, ког да польз ователи работали за термин а лам и, котор ые последов ательн о подс ое динял ись к центральным ком- п ью т ерам. По всему мир у были распрос тран ен ы сотни разновидн остей термин ал ов. Каждый из них вып олнял одни и те же действ ия (очис тк а экр ана, пер ем ещение курс ора и т. п.), одн ако команды для управл ения ими были различн ым и. Кроме тог о, систем а UNIX позволяе т выб ир ать, какие симв ол ы использ овать для забоя, ген ерац ии сигнал а прер ыва ния и других ком анд, примен яемых на послед ов ат ельн ых терм ин алах, например под авл ен ия и воз обновл ения выв ода. Так ие функц ии управ лялись (и до сих пор управл яютс я) ком андой stty. Перв он ач альная верс ия vi, созд анная в Кал ифорн ийс ком унив ерсит ете в Беркл и (University of California, Berkeley, UCB), абс траг ир овал а ин форм ацию об управл ении терминал ом из код а (который был о сложно из мен ить) в текстовую базу данных возм ожнос тей терм ин ал а (кот орую из менить был о легк о), поддержив аемую библиот ек ой termcap (от termin al capabilities). В нач ал е 80-х в System V был и внед рены база данных, со держ ащ ая двои чн ую информац ию о терминалах, и библиот ека terminfo
Открытие и закрытие файлов 25 (от terminal information). Эти две библ иотеки был и в осн овн ом функ цион ально экв ив алентн ым и. Чтоб ы сообщ ить vi, каким именн о терми нал ом вы пользуетесь, нео бх од им о было устан овить пер еменную окр у жен ия TERM. Обычно это проделыв ал ось файл ом запуска оболочки, та ким как .profile или .login. В настоящее врем я все пользуютс я эмулятор ами терм ин алов в граф и чес ком окр уж ен ии (наприм ер, xterm). Как правил о, система сама забо титс я о задан ии пер еменной TERM. (Кон ечно, можно вызвать vi и в нег ра фич ес кой консоли ваш его ПК. Это может очень сильн о пом очь при вос становлен ии системы в однопольз овательском реж име. Хот я остал ось немного людей, которые предп оч ли бы так работать на рег улярн ой ос нове.) Скорее всег о, для пов сед невного исп ользов ан ия вы выберит е гра фическую версию vi, например Vim или один из друг их клон ов. В Mic ros oft Windows или Mac OS X он, возможн о, буд ет запускаться по умол чанию. Одн ако когда вы запускаете vi (или какой-ниб удь друг ой столь же винт ажный экранн ый редактор) в эмул ят оре терм ин ала, он все еще исп ользуе т TERM и данн ые termcap или terminfo, а такж е обращает вним а ние на уст ановки stty. Зап уск в эмул яторе терминала – так ой же про стой спос об изучить vi, как и любой друг ой. Другим важным для поним ания vi факт ом являе тся то, что он разв и вался в то время, когда сист ем ы UNIX был и намног о мен ее стаб ильн ы ми, чем сейч ас. Пользователи тех лет должны были быть гот ов ыми к сбою в системе в любой момент, а в vi была предусмотр ена поддержка восс тан овления тех файлов, котор ые ред акт ир ов ал ись в момент систем ног о сбоя1. Так что если во время изуч ен ия vi вы увидит е опис ание раз личн ых возн ик ающ их проблем, вспомн ите историю его развит ия.Открытие и закрытие файлов vi можно использов ать для редакт иров ания произв ольног о текс тового файла. vi коп ирует редакт ируем ый файл в буфер (временно выделяе мую обл асть памяти), отображ ает буфер (хот я в каждый мом ент врем е ни вы видите тольк о ту часть, которая поместилась на экр ане) и поз во ляет вам доб авл ять, удалять или менять текст. При сох ранен ии резуль тат ов ред акт ир ов ан ия vi коп ирует отр ед акт ир ов анн ый буфер обр атно в пос тоя нн ый файл, зам ещая стар ый файл с тем же именем. Не забы вайте, что вы всегда раб от аете с копией вашег о файл а, хран им ой в бу фер е, поэ тому все ваши правки не изменят первонач альный файл, пок а вы не сохранит е буфер. Сохран ение измен ений част о наз ываю т «сох ра нен ием буф ер а» или просто «сохранен ием файла».1 К счас тью, сит уац ии такого род а случ аются горазд о реже, хот я систем ы все еще мог ут аварийн о заверш ить раб оту из-за внешн их причин, нап рим ер из- за прек ращен ия под ачи пит ания.
26 Глава 1. Текстовый редактор viОткрытие файла vi – это ком анда UNIX, котор ая выз ывает редакт ор vi для существую щег о или для сов ершенн о новог о файл а. Синтакс ис исп ользов ания этой ком анд ы следующ ий: $ vi [filename] Скобки, показанные в этой строк е, озн ач аю т, что имя файла – нео бяз а тельный пар аметр. Сами скобки наб ирать не надо. Знак $ – это пригла шен ие командной строки UNIX. Есл и не указ ать имя файла, то vi от крое т безымянн ый буфер. Имя можно указать при сохранен ии буф ера в файл. А пок а дав айте остан овимся на указ ании имени файла в ко мандной строк е. Имя файл а должно быть уникальным в пределах одн ог о кат ал ог а. Оно может содерж ать люб ой из 8-битных симв ол ов, кроме знак а кос ой чер ты (/), зарезервированног о в качеств е разд елит еля между файлами и кат ал огами в пут и файла, и ASCII NUL – симв ол а с нул евым и разря дам и. В имен и файл а можно даж е использ ов ать проб елы; в этом случае пер ед пробелом следует поставить обратн ую косую черт у (\). Тем не ме нее на практ ик е имен а файлов в основн ом сод ерж ат разл ичн ые сочет а ния больших и маленьк их букв, цифр, символ ов точк и (.) и подч еркив а ния (_). Помн ите, что UNIX чувс твит ел ен к регистр у: строчные бук в ы отлич аю тся от проп исн ых. Также не забывайт е наж имать на ENTER, чтобы соо бщ ить UNIX о том, что вы зак ончили ввод ком анды. Если вы хотите созд ать в каталоге нов ый файл, зад айт е в команде vi нов ое имя файла. Нап рим ер, чтоб ы в тек ущем катал ог е открыть нов ый файл с имен ем practice, введ ит е: $ vi practice Пос кольк у это нов ый файл, буф ер будет пуст ым, и на экр ан е вы увиди те следующее: ~ ~ ~ \"practice\" [New file] Тильды (~) в левом столбц е экр ан а указывают, что в файле нет никак ого текста, нет даже пустых строк. Строк а приглаш ения (такж е называемая строк ой сос тояния) внизу экр ан а отображ ае т имя и сос тояние файла. Есл и вы укаж ет е имя люб ог о из сущес твующ их в каталоге файлов, то сможете отр ед акт иров ать его. Предп оложим, что сущ ес тв ует файл с аб сол ютным пут ем /home/john/letter. Если вы уже нах од итесь в катал ог е /home/john, исп ользуйт е отн осит ельн ый путь к файл у. Нап ример $ vi letter выд аст на экр ан файл letter.
Открытие и закрытие файлов 27 Если вы находит есь в друг ом кат алоге, введите полный путь к файлу, чтобы начать его редакт ир ов ан ие: $ vi /home/john/letterПроблемы при открытии файлов • При запуск е vi поя вляется соо бщ ен ие [open mode] Возможн о, неп рав ильно распознае тс я тип ваш его термин ал а. Не медленно выйдите из сеа нс а редакт ир ован ия, введя ком анду :q. Проверьт е пер ем енн ую окруж ен ия $TERM. Ей нужно прис воить имя вашего терм ин ала. Или может е поп рос ить системног о админ истр а тора дать вам правильное знач ение тип а термин ал а. • Вы видит е одн о из следующих соо бщ ен ий: Visual needs addressable cursor or upline capability Bad termcap entry Termcap entry too long terminal: Unknown terminal type Block device required Not a typewriter Либ о тип вашего термин ала не опоз нан, либо что-то не так с его за пис ью в ваш ем terminfo или termcap. Введит е :q, чтоб ы выйти. Про верьт е пер еменную окруж ения $TERM или попрос ит е системного ад мин истр ат ора выб рать тип термин ала для ваш ег о окруж ения. • Поя вляе тся сообщ ение [new file], ког да вы счит ает е, что файл уже сущ ес твуе т. Пров ерьт е, правильн ый ли рег истр симв ол ов вы исп ольз овал и в име ни файла (имен а файл ов в UNIX чувс тв ительны к рег ис тр у). Если все верн о, возможн о, вы находитесь в друг ом катал ог е. Введит е :q для выхода. Пос ле этог о пров ерьте, нах од ит есь ли вы в том же каталоге, что и файл (введит е pwd в ком андн ой строк е UNIX). Если вы в нужном каталог е, выв ед ите список сод ержащихс я в нем файл ов (с помощ ью ls) и пров ерьте, нет ли файла под нем ного другим именем. • Вы запустил и vi, однак о попал и в приглашен ие с двоеточ ием (что говор ит о том, что вы нах од ит есь в реж име строкового редактир о ван ия ex). Возможн о, вы ввел и прер ыван ие пер ед тем, как vi усп ел отрис овать экран. Войд ит е в vi, введя в приг лашен ии ex (:) команд у vi. • Появляе тся одн о из след ующ их соо бщений: [Read only] File is read only Permission denied «Read only» озн ачае т, что вы мож ет е только просматривать файл; ва ши изм енен ия не могут быть сох ранен ы. Возм ожно, вы зап устили vi
28 Глава 1. Текстовый редактор vi в реж име просмотра (либ о чер ез view, либо как vi -R) либо у вас нет прав на зап ись этог о файла. Обр ат ит есь к раздел у «Проб лем ы при сох ран ении файлов» на стр. 30. • Поя вл яе тся одно из следующих соо бщен ий: Bad file number Block special file Character special file Directory Executable Non-ascii file file non-ASCII Файл, кот орый вы хотите отр ед актир овать, не является обычным текстов ым файл ом. Введит е :q! для вых од а и пров ерьт е этот файл, нап ример ком андой file. • При ввод е :q по одн ой из вышеназ ванных прич ин поя вляетс я соо б щение: No write since last change (:quit! overrides). Вы ненароком внесли изменение в файл. Для вых ода из vi введ ит е :q!. В этом случае изменен ия, сделанн ые во время сеа нса, не будут сохранены.Образ действия Как упом ин ал ось ранее, конц епц ия тек ущ его «режим а» явл яе тся фун дам ент альной в работ е vi. Сущ ес тв уют два режим а: режим вставки и ком андн ый реж им. Сраз у пос ле запуска актив ен ком андный реж им, в кот ором кажд ое наж ат ие клав иш и вызывае т ком анду. В реж им е вставки все, что вы печатаете, стан овится содерж имым ваш его файл а. Иног да случ айн о можно попасть в реж им вставки или, наобор от, нена рок ом выйти из него. В люб ом случае то, что вы введ ет е, скорее всег о, нежел ат ельн о отразитс я на сод ержимом файла. Нажмите ESC, чтоб ы поп асть в командн ый реж им. Есл и вы уже в нем, vi даст звуков ой сигнал (beep) при наж ат ии ESC. (Поэтому ком андный реж им иног да наз ывают сигн альным реж им ом.) Благопол учн о перейд я в командный реж им, вы можете исп рав ить лю бые случ айн ые измен ения, после чего вернутьс я к ред акт иров анию ва шег о текс та.Сохранение файла и выход В любой момент можно прек рат ить раб оту с файлом, сохранить правки и верн уться в приг лашен ие командн ой строки UNIX. Ком анд а vi, кот о рая сохраняе т изменен ия и прек ращ ает раб от у редакт ора, наз ывается ZZ. Обрат ите вним ание, что ZZ пиш ется проп исными букв ами.
Выход без сохранения правок 29 Предпол ож им, вы создали файл под наз вание м practice и ввел и в нем шесть строч ек текс та. Чтоб ы сох ран ить файл, снач ал а наж атием ESC проверьте, что вы поп ал и в ком андный режим, пос ле чего введ ит е ZZ. Клав иш и Результ ат ZZ \"practice\" [New file] 6 lines, 320 characters Введена команда запис и ZZ. Ваш файл сохранится как обычн ый файл UNIX. ls ch01 ch02 practice Вывод списка файлов в катал оге пок аж ет, что вы созд ал и новый файл practice. Рез ульт ат ы редактиров ания можн о сохранить и с помощ ью команд ex. Чтобы сох ранить (write) файл, не вых одя из vi, введите :w. Если вы ни чего не мен яли в файле, выйт и можн о с помощ ью ком анды :q, а введя :wq, вы сох ран ите изм ен ен ия и пок ин ет е vi. (:wq экв ив алентн о ZZ.) В гла ве 5 мы подр обн о расскаж ем об исп ользовании ком анд ex. Сейч ас про сто запомн ите эти несколько ком анд для запис и и сох ран ен ия файлов.Выход без сохранения правок При перв ом знакомс тве с vi, особенн о есл и вы бесс трашный эксп ери мент атор, вам могут пон адобитьс я две другие ком анд ы ex, чтобы изба витьс я от созданн ой вам и пут ан иц ы. Если вы зах отит е отмен ить все сдел анн ые за сеа нс изменения и вер нутьс я к первонач альном у файл у, то ком анда :e! ENTER верн ет вас к пос ледн ей сохран енной версии файла, и вы смож ет е нач ать все зан ово. Есл и же вы хотит е отказатьс я от изменен ий и выйт и из vi, то команд а :q! ENTER осущес твит выход из редактир уемого файла и возврат в приглашен ие UNIX. Обе эти ком анд ы прив едут к потер е всех изм енений, сделанн ых в буф ере со врем ен и пос леднег о сохранен ия. Обычно vi не позволяет от казатьс я от измен ен ий. Воск лиц ательный знак, доб авленный к коман дам :e или :q, зас тав ит vi отм енить этот зап рет и выполнить операцию, нес мотр я на то, что буфер был изм ен ен.
30 Глава 1. Текстовый редактор viПроблемы при сохранении файлов • Вы пытаетесь записать файл, но получаете одно из след ующих со общ ений: File exists File file exists - use w! [Existing file] File is read only Введите :w! file, чтоб ы пер ез ап ис ать существ ующ ий файл, или :w newfile, чтоб ы сохран ить тек ущ ую ред акцию в новом файл е. • Вы хот ите зап исать файл, но у вас нет разр еш ения на зап ись для него. Вам выдается «Permission denied.» Исп ольз уйт е ком анд у :w newfile, чтобы зап исать содерж им ое буфера в новый файл. При нал ич ии прав на зап ись для этог о каталога вы сможет е с помощ ью команд ы mv зам ен ить первоначальную версию нов ым файлом. Если у вас нет разр еш ен ия на запись для этого ката лога, введ ит е :w pathname/file, чтоб ы запис ать буфер в том кат алоге, где у вас есть разрешен ие на зап ись (например, дом ашний катал ог или /tmp). • Вы пытает есь запис ать файл, но пол учает е сообщен ие о том, что файлов ая сист ем а переполн ен а. Введит е :!rm junkfile, чтоб ы удалить (большой) ненужн ый файл, тем самым освободив нем ного мест а. (Есл и ком анд у ex начать с воск ли цательн ого знак а, то вы пол уч ите доступ в UNIX.) Или введит е :!df, чтобы посмотреть, есть ли свободн ое мес то в дру гой файл ов ой сист ем е. Если есть, выб ер ите кат ал ог в той сист ем е и зап иш ит е файл туд а, восп ольз ов авш ись ком андой :w pathname. (df – это команд а UNIX, котор ая провер яе т свободн ое место на диск ах; наз ван ие происходит от disk free.) • Систем а пер евод ит вас в открытый реж им (open mode) и соо бщ а ет, что файл овая сист ема пер еполн ен а. Диск пер еполнен врем енн ыми файлами vi. Введ ите :!ls /tmp, чтоб ы посмотр еть, есть ли файлы, кот ор ые можно удал ить, даб ы пол учить нем ног о мест а на диске1. Есл и таков ые имею тся, созд айте временную оболочк у UNIX, из которой вы сможете удалить эти файл ы, или об рат ит есь к друг им ком андам UNIX. Обол очку можно создать, если ввести :sh; для выхода из обол очк и и возв рат а в vi наж мите CTRL-D или введ ит е команду exit. (В сов ременных систем ах UNIX при ис польз овании оболочки с управл ен ие м заданиями можн о просто на жать CTRL-Z, чтоб ы приост ановить vi и верн утьс я в командн ую 1 vi может хран ить врем енные файл ы в /usr/tmp, /var/tmp или в ваш ем домаш нем катал ог е; возможн о, вам придетс я немного пок оп атьс я, чтобы раз уз нать, что именно заним ае т столько места. Vim обычно держ ит свои времен ные файл ы в том же катал ог е, что и ред актир уем ый файл.
Выход без сохранения правок 31 строку UNIX; для возв рата в vi введ ите fg.) Пос ле выс вобож дения места на диске сохран ит е ваш файл команд ой :w!.• Вы пытает есь зап ис ать файл, но получ аете соо бщ ен ие о том, что дост игнут ы дисков ые квот ы. Попробуйте застав ить систему запис ать ваш буфер с пом ощью ко манд ы :pre (сокращ ен ие от :preserve). Если это не сраб от ало, пои щи те файл ы для удал ения. Восп ользуйтесь ком андой :sh (или CTRL-Z, есл и сист ем а поддержив ае т управление задан иям и), чтобы выйт и из vi и удалить файл ы. Для возв рат а в vi наж мит е CTRL-D (или введи те fg). Зат ем зап иш ите файл команд ой :w!.Упражнения Единс твенный спос об выучить vi – это практик а. Сейчас вы уже знаете дост ат очн о, чтобы созд ать нов ый файл и верн утьс я в приглашен ие UNIX. Создайт е файл с имен ем practice, внес ите в нег о немного текста, затем сох раните файл и выйдит е.Отк рыть файл с имен ем practice в текущем каталоге: vi practiceВставьте текст: i любой текстВозв рат в командн ый реж им: ESCВыход из vi с сох ранением правок: ZZ
2Простое редактированиеГлава 2.Эта глава, пос трое нная в вид е рук ов одства, познак ом ит вас с ред актиров анием в vi. Вы узн аете, как пер емещать курсор и делать прос тыеправк и. Есл и вы еще ни раз у не работ ал и в vi, то лучше проч тит е этуглав у цел иком.Последующ ие глав ы приз ван ы углуб ить ваши нав ык и, что поз волит вамраб от ать быс тр ее и эфф ект ивнее. Одн о из главн ых преимуществ vi дляопытного польз ов ател я – огромный выб ор опц ий (при этом один из главных недостатк ов для новичка – огромн ое числ о команд ред акт ора).Нельзя освои ть vi, прос то зап омн ив все ком анд ы. Начнит е с изученияпростых команд, о которых расс казывае тся в этой глав е, и обр ащ айт евним ание на общ ие шабл оны их исп ользования.Изуч ая vi, берите на зам етк у зад ачи, котор ые вы мож ет е пор учить редакт ор у, а затем найдит е команд ы, решающ ие их. В последующ их главах вы узн аете о продвин утых свойств ах vi, но преж д е чем братьс я засложн ое, нужн о осв ои ть азы.В этой глав е рассказ ывае тся о том, как:• Перемещ ать курсор• Добавлять и мен ять текст• Удал ять, перемещ ать и коп ировать текст• Переход ить в реж им вставки разными спос обамиКоманды viВ vi есть два реж има: ком андный и реж им вставк и. При входе в файлвы оказ ывает есь в командном реж име, и редактор ждет ввод а ком анд.Они позволяют пер емещатьс я на любое мес то в файле, производ итьправки или переход ить в реж им вставки, чтобы добав ить новый текст.
Перемещение курсора 33 Команд ы такж е нужны для выход а из файла (с сохран ение м изм енений или без), чтобы верн утьс я в ком андную строк у UNIX. Оба режим а раб оты можно рассматр ив ать как две разн ые «клав иат у ры». В реж им е вставки ваш а клавиат ура раб от ае т подобно печатн ой ма шинк е. В ком андн ом реж им е каждая клав иш а имее т свое знач ение или выз ывае т какую-либ о инс тр укцию. Есть несколько спос об ов сообщить vi о переходе в режим вставк и. Са мый простой из них – наж ать клавишу i. Сама буква i на экране не по явится, но пос ле ее нажат ия все, что вы набираете, возн икнет на экр ан е и будет пер ед аватьс я в буфер. При этом курсор отм еч ае т мес то для вставк и нового текста1. Для вых од а из реж им а вставк и наж мит е ESC. Это дейс твие перем ест ит курсор на один симв ол назад (он встанет на по следний введ енный вами симв ол) и верн ет vi в командный режим. Нап ример, вы отк рыли нов ый файл и хот ите встав ить туда слово «intro duction». Если ввес ти iintroduction, то на экране поя вится: introduction При отк рытии нов ог о файла vi нач ин ае т раб от у в ком андном реж им е и поним ает перв ую клавиш у (i) как команду вставки. Посл е этого все введ енн ые симв олы расс матр ив аютс я им как текст, пок а вы не нажме те ESC. Чтоб ы исправ ить ошибк у в реж име вставки, вернит есь назад с помощ ью клавиш и BACKSPACE и набер ите симв ол зан ово. В зав иси мос ти от тип а исп ользуем ог о вам и термин ала BACKSPACE мож ет либ о удал ять набранн ый текст с экр ана, либо пер ем ещ ать курсор пов ерх не го. В люб ом случ ае зам ещаемый текст буд ет удален. Обр атит е вним а ние, что вы не сможете исп ольз ов ать клавиш у BACKSPACE дальш е то го места, где включил и режим вставки. (Если в Vim выключ ить совмес тим ость с vi, то там возможно перемещен ие курс ора дальше мест а нач а ла режима вставки.) В vi есть опция, позволяющая опр едел ить прав ый отс туп и выполняю щая возв рат кар етки всяк ий раз при его дост иж ении. Пока же во врем я вставки текста для перех од а на новую строку исп ольз уйт е ENTER. Иногда сложно определ ить, в каком из двух реж им ов вы нах одит есь. Есл и vi вед ет себ я не так, как ожид ал ось, наж мит е ESC один или два раза, чтоб ы пров ерить, в каком вы реж им е. Звук ов ой сигнал означае т, что в ком андном.Перемещение курсора Скор ее всег о, во врем я сеа нс ов ред актир ования вы будет е уделять мало вним ания вставке нов ого текс та, так как большая часть врем ен и уйдет на правку существ ующег о.1 В некотор ых верс ия х строка состоян ия пок аз ывает, что вы нах од ит есь в ре жиме вставки.
Search
Read the Text Version
- 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
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 1 - 50
- 51 - 100
- 101 - 150
- 151 - 200
- 201 - 250
- 251 - 300
- 301 - 350
- 351 - 400
- 401 - 450
- 451 - 500
- 501 - 512
Pages: