Unix Работа с текстом на максимальной 7 скорости и мощности 7 н из овы да х н г и ла е SEVENTH в Learning the vi and Vim Editors о EDITION Vi m For nearly 30 years, vi has been the standard editor И for Unix and Linux, and since 1986 this book has “vi, like many of the classic been the leading vi guide. But Unix isn’t what it utilities developed during з was three decades ago, and neither is this book. the early years of Unix, у The seventh edition of Learning the vi and Vim Editors has has a reputation for being ч been expanded to include detailed information on Vim, the hard to navigate. Bram а leading vi clone. Moolenaar’s enhanced е Now the default editor on most Linux systems and the default clone, Vim, has gone м version of vi on Mac OS X, Vim is also available for many other a long way toward operating systems. This guide teaches text-editing basics as well р removing reasons for as advanced tools, such as interactive macros and scripts to extend the editor—all in the easy-to-follow style that’s made such impressions.... It has е this book a classic. You’ll learn how to: become probably the most д popular version of vi.” а • Move around vi with speed к —From the Preface • Go beyond vi basics, such as using buffers т о • Use vi’s global search-and-replace function Arnold Robbins, a professional programmer and technical р • Customize vi and execute Unix commands author who’s worked with Unix ы systems since 1980, helped • Use Vim’s extended text objects and powerful regular shape the POSIX standard expressions v for awk. i Изучаем • Perform multiwindow editing and write Vim scripts Elbert Hannah is a professional и software engineer and software • Make full use of the GUI version of Vim, called gvim vi Vim architect who wrote a full- V • Use Vim’s enhancements, such as syntax highlighting and screen editor in assembler in i extended tags 1983 as his first professional m и assignment. • Compare Vim with three other vi clones: nvi, elvis, and vile Linda Lamb, one of O’Reilly Learning vi or Vim is required knowledge if you use Linux or Media’s first editors, also worked Unix, and in either case, this book is essential. for the company as a technical writer and marketing manager. &HR редакторы o a www.oreilly.com Lnb a b n m i US $34.99 CAN $34.99 an bhs ISBN: 978-0-596-52983-3 Free online edition , for 45 days with Арнольд Роббинс, y(7IA5J6*PMTSNN(+ \!%!&!}!; purchase of this book. Элберт Ханна и Линда Лэмб Details on last page. Learning the 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-1 ISBN 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 печ. л. Посвящается моей жене Мириам за любовь, терпение и поддержку. Арнольд Роббинс (шестое и седьмое издания) Оглавление Предисловие . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .10 I. Базовый и продвинутый 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 Перспектива . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .168 II. 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 Исходный код и поддерживаемые операционные системы . . . . . . . . . .417 IV. Приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .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 и о том, ка- кие ко ман ды мож но при спо со бить под ва ши нуж ды. Впо след ст вии мож но вер нуть ся к этим гла вам для бо лее де таль но го изу че ния.