Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore 2013_vi_vim_ru

2013_vi_vim_ru

Published by faustkeller, 2017-09-07 00:23:54

Description: 2013_vi_vim_ru

Search

Read the Text Version

Работа с текстом на максимальной 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 trans­lation is pub­lished 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 Bo­oks­ 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-под­ об­ные сис­те­мы с дос­тупн­ ым ис­ходн­ ым ко­дом. При­мер­ ам­ и перв­ ых явл­ я­ют­ся So­la­ 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) текст (на­прим­ ер, про­пу­щен­ное или но­ вое слов­ о ли­бо про­пу­щенн­ ое предл­ о­жен­ ие) или, нао­ бо­рот, удал­ ить (de­le­ 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 В не­ко­тор­ ых верс­ ия­ х стро­ка со­стоян­ ия пок­ аз­ ы­ва­ет, что вы нах­ од­ ит­ есь в ре­ жи­ме встав­ки.


































Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook