Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Практическое использование Vim

Покупка
Артикул: 712472.01.99
Доступ онлайн
699 ₽
В корзину
Vim - быстрый и эффективный текстовый редактор, способный повысить скорость и эффективность разработки. С помощью более чем 100 рецептов вы быстро освоите основные возможности Vim и сможете заняться решением своих самых необычных задач, связанных с созданием и правкой текста. В данной книге вы найдете новые и эффективные приемы работы с редактором независимо от того, являетесь ли вы начинающим или опытным пользователем Vim. В обновленном издании исправлены ошибки и добавлены новые рецепты, использующие улучшенные возможности, появившиеся в версии Vim 7.4.110. Книга предназначена для всех пользователей Vim - как начинающих, так и опытных.
Нейл, Д. Практическое использование Vim / Д. Нейл ; пер. с англ. А.Н. Киселева. - 2-е изд. - Москва : ДМК Пресс, 2017. - 392 с. - ISBN 978-5-97060-420-5. - Текст : электронный. - URL: https://znanium.com/catalog/product/1028084 (дата обращения: 29.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Практическое  
использование Vim

Дрю Нейл

Practical Vim

Second Edition

Drew Neil

Foreword by Tim Pope

The Pragmatic Bookshelf
Dalls, Texas • Raleigh, North Carolina

Edit Text ap the Speed of Thought

Практическое  
использование Vim

Второе издание

Москва, 2017

Дрю Нейл

Предисловие Тима Поупа

Редактируйте текст со скоростью мысли

УДК 004.912Vim
ББК 32.973.26-018.2

Н38

Нейл Д.

Н38
Практическое использование Vim / пер. с англ. Киселева А. Н. – 
2-е изд. – М.: ДМК Пресс, 2017. – 392 с.: ил.

ISBN 978-5-97060-420-5

Vim – быстрый и эффективный текстовый редактор, способный по
высить скорость и эффективность разработки. С помощью более чем 
100 рецептов вы быстро освоите основные возможности Vim и сможете 
заняться решением своих самых необычных задач, связанных с созданием 
и правкой текста.

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

Книга предназначена для всех пользователей Vim – как начинающих, 

так и опытных.

УДК 004.912Vim
ББК 32.973.26-018.2

No part of this publication may be reproduced, stored in a retrieval system, or 

transmitted, in any form, or by any means, electronic, mechanical, photocopying, 
recording, or otherwise, without the prior consent of the publisher. 

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

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

ISBN 978-1-68050-127-8 (анг.)
Copyright © 2015 The Pragmatic  
Programmers, LLC.

ISBN 978-5-97060-420-5 (рус.)
© Оформление, перевод,  
ДМК Пресс, 2017

Что говорят читатели о книге 
«Практическое использование Vim»

Из этой книги я узнал о Vim намного больше, чем из других ресурсов.
 Роберт Эванс (Robert Evans), 
инженер-программист, Code Wranglers

Прочитав лишь пару глав из книги «Практическое использование 
Vim», я понял, насколько мало я знаю. За тридцать минут я превратился в начинающего пользователя!
 Хенрик Них (Henrik Nyh), 
инженер-программист

Книга «Практическое использование Vim» перевернула мои представления о том, что должен уметь текстовый редактор.
 Джон П. Дэйгл (John P. Daigle),  
разработчик, ThoughtWorks, Inc.

В этой книге Дрю продолжил свою работу, начатую в серии обучающих видеороликов Vimcast. Книгу обязательно следует прочитать 
всем, кто пользуется редактором Vim.
 Андерс Джанмайр (Anders Janmyr), 
разработчик, Jayway

Книга «Практическое использование Vim» проложила мост между официальной документацией и тем, как действительно следует 
использовать Vim. После прочтения нескольких глав Vim стал моим 
основным редактором. Я уже не смогу отказаться от него.
 Хавьер Колладо (Javier Collado),  
инженер по автоматизации контроля качества, Canonical Ltd.

Дрю Нейл (Drew Neil) не просто показывает правильный выбор 
инструмента для работы – он подробно знакомит читателя с философией, стоящей за каждым решением. В своей книге автор не ждет, 
что вы запомните все и вся, – вместо этого он методично учит вас 
думать на Vim.
 Мислав Мароник (Mislav Marohnic),  
консультант

Я пользовался редактором Vim при администрировании сервера 
более пятнадцати лет, но лишь недавно я стал применять его для 
разработки программного обеспечения. Я думал, что я неплохо знаю 
Vim, однако книга «Практическое использование Vim» помогла мне 
значительно повысить свою продуктивность.
 Грейм Мэтисон (Graeme Mathieson),  
инженер-программист, Rubaidh Ltd.

Книга «Практическое использование Vim» показала мне, как много я еще не знаю о Vim. Каждый рецепт, что приводится в книге, 
можно сразу же применять на практике и немедленно получить прирост производительности труда.
 Матиас Мейер (Mathias Meyer),  
писатель, Riak Handbook

Книга «Практическое использование Vim» – настоящая сокровищница знаний о редакторе Vim. Я ежедневно пользуюсь Vim вот 
уже два года, но эта книга стала для меня настоящим открытием.
 Феликс Гайзендорфер (Felix Geisendo..rfer),  
соучредитель, Transloadit

Содержание

Благодарности ................................................. 20
Предисловие к первому изданию ........................ 23
Это надо знать ................................................. 25
Прочитайте всеми забытое руководство .............. 28

Глава 1. Путь Vim .............................................. 39

Рецепт 1. Встречайте: команда «точка» ........................................ 39
Команда «точка» – микромакроопределение ........................... 42
Рецепт 2. Не повторяйся .............................................................. 42
Избавляйтесь от лишних перемещений ................................... 43
Рецепт 3. Шаг назад, три вперед .................................................. 45
Делайте изменения повторяемыми ......................................... 45
Делайте перемещения повторяемыми .................................... 46
Теперь все вместе ................................................................... 46
Рецепт 4. Действие, повтор, возврат ............................................ 46
Рецепт 5. Поиск и замена вручную................................................ 48
Будьте экономны: выполняйте поиск без ввода лишних  
символов ................................................................................. 49
Делайте изменения повторяемыми ......................................... 50
Теперь все вместе ................................................................... 50
Рецепт 6. Формула точки .............................................................. 50
Обзор решений трех задач редактирования  
с помощью команды «точка» .................................................... 51
Идеальное решение: одна клавиша для перехода  
и одна для изменения .............................................................. 51

Часть I. РЕЖИМЫ .............................................. 52

Глава 2. Командный режим ................................ 53

Рецепт 7. Оторвите кисть от холста .............................................. 53

Содержание

Рецепт 8. Группируйте изменения для возможной отмены ........... 54
Рецепт 9. Составляйте повторяемые изменения .......................... 56
Удаление назад ....................................................................... 56
Удаление вперед ..................................................................... 56
Удаление целого слова ............................................................ 57
Дополнительная оценка: какой вариант более повторим? ....... 57
Обсуждение ............................................................................ 58
Рецепт 10. Используйте счетчики для простых  
арифметических операций ........................................................... 58
Рецепт 11. Не занимайтесь подсчетами, если можно  
выполнить повторение ................................................................. 60
Используйте счетчик, когда в этом есть смысл ........................ 62
Рецепт 12. Объединяй и властвуй ................................................. 63
Оператор + команда перемещения = Действие ....................... 63
Расширение возможностей Vim ............................................... 64

Глава 3. Режим вставки...................................... 67

Рецепт 13. Исправляйте ошибки, не выходя из режима  
вставки ......................................................................................... 67
Рецепт 14. Возвращайтесь в командный режим ........................... 68
Встречайте: командный подрежим режима вставки ................ 69
Рецепт 15. Вставка из регистра, не покидая режима вставки ....... 70
Используйте <C-r>{register} для доступа к регистрам .............. 71
Рецепт 16. Выполняйте простые вычисления на месте ............ 72
Рецепт 17. Вставка необычных символов по их кодам .................. 73
Рецепт 18. Вставка необычных символов, соответствующих  
парам символов ........................................................................... 74
Рецепт 19. Правка текста в режиме замены .................................. 74
Затирайте символы табуляции в виртуальном режиме  
замены .................................................................................... 75

Глава 4. Визуальный режим ................................ 77

Рецепт 20. Знакомство с визуальным режимом ............................ 77
Рецепт 21. Выделение текста в визуальном режиме ..................... 79
Включение визуальных режимов ............................................. 80
Переключение между визуальными режимами ........................ 80
Переключение свободного конца выделения ........................... 81
Рецепт 22. Повторение команд построчного визуального  
режима ........................................................................................ 81
Подготовка .............................................................................. 82
Выполните отступ один раз, а затем повторите ....................... 82

Содержание

Рецепт 23. Используйте операторы вместо команд  
визуального режима. , если это возможно ..................................... 84
Использование визуального оператора ................................... 84
Использование операторов командного режима ..................... 85
Обсуждение ............................................................................ 85
Рецепт 24. Правка табличных данных в блочном визуальном  
режиме ........................................................................................ 86
Рецепт 25. Изменение колонок текста .......................................... 88
Рецепт 26. Добавление текста после непрямоугольного блока  .... 90

Глава 5. Режим командной строки ....................... 92
Рецепт 27. Встречайте: режим командной строки ........................ 92
Специальные ключи в режиме командной строки .................... 94
Команды Ex стреляют дальше и накрывают большую  
площадь .................................................................................. 95
Рецепт 28. Выполнение команд для одной строки  
или для группы смежных строк ..................................................... 96
Номера строк .......................................................................... 96
Определяйте диапазон строк с использованием их номеров  .... 97
Определяйте диапазон строк посредством визуального  
выделения ............................................................................... 98
Определяйте диапазон строк с помощью шаблонов ................ 99
Изменяйте адрес с помощью смещения ................................ 100
Обсуждение .......................................................................... 100
Рецепт 29. Копируйте и перемещайте строки с помощью  
команд ':t' и ':m'  ......................................................................... 101
Копируйте строки командой :t ............................................... 101
Перемещайте строки командой ':m'  ...................................... 103
Рецепт 30. Применение команд командного режима  
к диапазону строк ....................................................................... 104
Рецепт 31. Повторяйте последнюю команду Ex  .......................... 106
Рецепт 32. Автодополнение команд Ex  ...................................... 108
Выбор из нескольких совпадений .......................................... 109
Рецепт 33. Вставка текущего слова в командную строку ............. 110
Рецепт 34. Повторный вызов команд из истории ........................ 111
Встречайте: окно режима командной строки ......................... 112
Рецепт 35. Выполнение команд в оболочке ................................ 114
Запуск программ в командной оболочке ............................... 115
Передача содержимого буфера на вход командам  
и сохранение вывода команд в буфере .................................. 117
Фильтрация содержимого буфера с помощью внешней  
команды ................................................................................ 118

Содержание

Обсуждение .......................................................................... 119
Рецепт 36. Выполнение сразу нескольких команд Ex .................. 119
Выполнение команд Ex по одной ........................................... 120
Запись команд Ex в сценарий и его выполнение .................... 121
Запуск сценария для изменения нескольких файлов ............. 122

Часть II. ФАЙЛЫ ............................................. 124

Глава 6. Управление несколькими файлами ........ 125

Рецепт 37. Слежение за открытыми файлами с помощью  
списка буферов .......................................................................... 125
Различия между файлами и буферами .................................. 125
Встречайте: список буферов ................................................. 126
Пользуйтесь списком буферов .............................................. 127
Удаление буферов ................................................................. 128
Рецепт 38. Группировка буферов в коллекции с помощью  
списка аргументов ..................................................................... 129
Заполнение списка аргументов ............................................. 130
Определение файлов по именам ........................................... 130
Определение шаблонов имен файлов ................................... 130
Определение файлов с помощью обратных кавычек .............. 131
Использование списка аргументов ........................................ 132
Рецепт 39. Управление скрытыми файлами ................................ 132
Обработка скрытых буферов при выходе из редактора .......... 134
Включите параметр настройки hidden перед вызовом  
команды :argdo или :bufdo ..................................................... 134
Рецепт 40. Деление рабочего пространства на окна ................... 136
Создание окон ....................................................................... 136
Переключение фокуса ввода между окнами .......................... 137
Закрытие окон ....................................................................... 138
Изменение размеров и переупорядочение окон .................... 138
Рецепт 41. Организация размещения окон с помощью вкладок ... 139
Как пользоваться вкладками.................................................. 140
Открытие и закрытие вкладок ................................................ 141
Переключение между вкладками ........................................... 141
Переупорядочение вкладок ................................................... 142

Глава 7. Открытие файлов и их сохранение  
на диск ......................................................... 143

Рецепт 42. Открытие файла по его имени с использованием  
команды :edit .............................................................................. 143

Содержание

Как открыть файл, указав путь относительно текущего  
рабочего каталога ................................................................. 144
Как открыть файл, указав путь относительно активного  
каталога ................................................................................ 145
Рецепт 43. Открытие файла по его имени с применением  
команды :find .............................................................................. 146
Подготовка ............................................................................ 146
Настройка параметра path ..................................................... 147
Используйте команду :find для поиска файлов по именам ..... 148
Рецепт 44. Исследование файловой системы с помощью  
netrw .......................................................................................... 148
Подготовка ............................................................................ 149
Встречайте: netrw – встроенный обозреватель файлов Vim ... 149
Открытие обозревателя файлов ............................................ 150
Работа с окнами .................................................................... 151
Дополнительные возможности netrw ..................................... 152
Рецепт 45. Сохранение файлов в несуществующие каталоги ..... 153
Рецепт 46. Сохранение файла с привилегиями  
суперпользователя .................................................................... 153

Часть III. БЫСТРАЯ НАВИГАЦИЯ ......................... 156

Глава 8. Навигация внутри файлов ..................... 157

Рецепт 47. Не убирайте руки из основной позиции ..................... 158
Оставьте свою правую руку там, где она должна быть ............ 159
Рецепт 48. Разница между фактическими строками  
и строками на экране ................................................................. 160
Рецепт 49. Перемещение по словам ........................................... 162
Отличайте слова и СЛОВА ..................................................... 164
Рецепт 50. Поиск символов ........................................................ 165
Поиск символа может выполняться включительно  
или исключительно ................................................................ 168
Думайте как при игре в «Балду» ............................................. 169
Рецепт 51. Поиск с целью навигации .......................................... 169
Используйте команды поиска в операциях ............................ 171
Рецепт 52. Выделение фрагментов с применением  
текстовых объектов .................................................................... 172
Выполнение операций с текстовыми объектами .................... 175
Обсуждение .......................................................................... 175
Рецепт 53. Удаление, включая ограничители, и изменение  
внутри ограничителей ................................................................ 176
Рецепт 54. Установка меток и возврат к ним ............................... 178

Содержание

Автоматическая расстановка меток ....................................... 179
Рецепт 55. Переход между парными скобками ........................... 180
Переход между парными ключевыми словами ....................... 181

Глава 9. Навигация между файлами ................... 183

Рецепт 56. Обход списка переходов ........................................... 183
Рецепт 57. Обход списка изменений .......................................... 185
Отметка последнего изменения ............................................ 186
Рецепт 58. Переход к файлу с именем под курсором .................. 187
Определение расширения файла .......................................... 188
Определение списка каталогов для поиска............................ 188
Обсуждение .......................................................................... 189
Рецепт 59. Переключение между файлами с помощью  
глобальных меток ....................................................................... 190
Устанавливайте глобальную метку перед погружением  
в код ...................................................................................... 191

Часть IV. РЕГИСТРЫ ........................................ 192

Глава 10. Копирование и вставка ....................... 193

Рецепт 60. Удаление, копирование и вставка с применением. 
неименованного регистра .......................................................... 193
Перестановка символов ........................................................ 194
Перестановка строк ............................................................... 194
Создание дубликатов строк ................................................... 195
Ой! Я затер свою копию ......................................................... 195
Рецепт 61. Знакомство с регистрами Vim ................................... 196
Адресация регистров ............................................................ 197
Неименованный регистр ("") .................................................. 198
Регистр захвата («0) .............................................................. 199
Именованные регистры ("a–"z) .............................................. 199
Регистр «черной дыры» ("_) ................................................... 200
Системный буфер обмена ("+) и регистр выделенного  
фрагмента ("*) ....................................................................... 201
Регистр выражений ("=) ......................................................... 202
Дополнительные регистры .................................................... 202
Рецепт 62. Замена выделенного текста содержимым  
регистра..................................................................................... 203
Как поменять слова местами ................................................. 204
Рецепт 63. Вставка из регистра .................................................. 205
Вставка последовательностей символов ............................... 205

Содержание

Вставка строк ........................................................................ 206
Обсуждение .......................................................................... 207
Рецепт 64. Взаимодействие с системным буфером обмена ....... 207
Подготовка ............................................................................ 208
Вызов системной команды вставки ....................................... 208
Использование системной команды вставки в режиме  
вставки .................................................................................. 209
Используйте регистр "+, чтобы исключить необходимость  
переключения параметра paste  ............................................ 210

Глава 11. Макросы .......................................... 211

Рецепт 65. Запись и выполнение макроса .................................. 212
Запись последовательности команд в виде макроса ............. 212
Повторное выполнение последовательности команд  
вызовом макроса .................................................................. 213
Последовательное выполнение макроса  .............................. 214
Параллельное выполнение макроса  ..................................... 215
Рецепт 66. Товсь! Цельсь! Отставить! ......................................... 215
Нормализация позиции курсора ............................................ 215
Устанавливайте курсор повторяемыми командами  
перемещения ........................................................................ 216
Используйте возможность прерывания при неудачном  
перемещении курсора  .......................................................... 216
Рецепт 67. Выполнение со счетчиком ......................................... 217
Рецепт 68. Повторение изменений в последовательности  
строк .......................................................................................... 219
Запись единицы правки ......................................................... 219
Последовательное выполнение макроса  .............................. 221
Параллельное выполнение макроса  ..................................... 222
Выбор: последовательно или параллельно ............................ 223
Рецепт 69. Добавление команд в макросы.................................. 223
Обсуждение .......................................................................... 224
Рецепт 70. Выполнение операций над множеством  
файлов ....................................................................................... 225
Подготовка ............................................................................ 225
Создание списка целевых файлов ......................................... 226
Запись единицы правки ......................................................... 226
Параллельное выполнение макроса ...................................... 227
Последовательное выполнение макроса ............................... 228
Сохранение изменений во всех файлах ................................. 229
Обсуждение .......................................................................... 229

Содержание

Рецепт 71. Использование итератора для нумерации  
элементов в списке .................................................................... 230
Простой язык сценариев Vim  ................................................ 231
Запись макроса ..................................................................... 231
Выполнение макроса ............................................................. 232
Рецепт 72. Правка содержимого макроса ................................... 232
Задача: Нестандартное форматирование .............................. 233
Вставка макроса в документ .................................................. 234
Правка макроса ..................................................................... 234
Копирование макроса из документа обратно в регистр ......... 234
Обсуждение .......................................................................... 235

Часть V. ШАБЛОНЫ ......................................... 237

Глава 12. Поиск по шаблону и поиск точного  
совпадения ................................................... 238

Рецепт 73. Настройка чувствительности к регистру  
в шаблонах  ................................................................................ 238
Глобальная настройка чувствительности к регистру .............. 239
Настройка чувствительности к регистру для каждой  
операции поиска ................................................................... 239
Интеллектуальное определение чувствительности  
к регистру .............................................................................. 239
Рецепт 74. Включение поддержки регулярных выражений ......... 240
Поиск шестнадцатеричных кодов цвета в расширенном  
режиме .................................................................................. 241
Поиск шестнадцатеричных кодов цвета в самом  
волшебном режиме ............................................................... 242
Использование класса шестнадцатеричных цифр ................. 242
Обсуждение .......................................................................... 242
Рецепт 75. Ключ \V включает режим поиска точного  
совпадения ................................................................................ 244
Рецепт 76. Использование круглых скобок для захвата  
совпадений с подвыражениями .................................................. 246
Рецепт 77. Границы слова .......................................................... 247
Рецепт 78. Границы совпадения ................................................. 249
Рецепт 79. Экранирование проблемных символов ..................... 251
Экранируйте символы «/», выполняя поиск вперед ................ 252
Экранируйте символы «?», выполняя поиск назад .................. 253
Всегда экранируйте символы «\»  .......................................... 254
Экранируйте символы программно ....................................... 255

Содержание

Глава 13. Поиск .............................................. 257

Рецепт 80. Встречайте: команда поиска ..................................... 257
Выполнение команды поиска................................................. 258
Определение направления поиска ........................................ 258
Повторение последней команды поиска ................................ 258
История поиска ..................................................................... 260
Рецепт 81. Подсветка совпадений .............................................. 260
Отключение подсветки совпадений  ...................................... 260
Рецепт 82. Предварительный просмотр первого совпадения ..... 261
Проверка существования совпадения ................................... 262
Автодополнение поля ввода шаблона с опорой  
на предварительные результаты поиска ................................ 262
Рецепт 83. Смещение курсора относительно конца  
совпадения ................................................................................ 263
Рецепт 84. Выполнение операций над полным совпадением ...... 265
Усовершенствованная формула точки ................................... 267
Рецепт 85. Создание сложных шаблонов с использованием  
истории поиска .......................................................................... 268
1: Максимальное совпадение ................................................ 269
2: Доработка .......................................................................... 269
3: Еще один цикл ................................................................... 270
4: Последний штрих ............................................................... 271
Обсуждение .......................................................................... 272
Рецепт 86. Подсчет совпадений с текущим шаблоном ................ 272
Подсчет количества совпадений командой ':substitute' .......... 273
Подсчет количества совпадений командой ':vimgrep' ............. 273
Рецепт 87. Поиск текущего визуального выделения ................... 274
Поиск текущего слова в визуальном режиме ......................... 274
Поиск текущего выделения (прототип) .................................. 275
Поиск текущего выделения (окончательная версия) .............. 276

Глава 14. Подстановка ..................................... 277

Рецепт 88. Встречайте: команда подстановки ............................ 277
Настройка поведения команды подстановки с помощью  
флагов ................................................................................... 278
Специальные символы в строке замены ................................ 279
Рецепт 89. Поиск и замена всех совпадений в файле ................. 279
Рецепт 90. Подтверждение каждой подстановки ........................ 281
Обсуждение .......................................................................... 282
Рецепт 91. Повторное использование последнего шаблона  
поиска ........................................................................................ 283

Содержание

Этот прием подходит не всегда ............................................. 284
Влияние на историю команд .................................................. 284
Рецепт 92. Замена содержимым регистра .................................. 285
Передача по значению........................................................... 285
Передача по ссылке .............................................................. 286
Сравнение ............................................................................. 286
Рецепт 93. Повторение предыдущей команды подстановки ....... 287
Повторение команды подстановки в строке ко всему  
файлу .................................................................................... 288
Изменение диапазона в команде подстановки ...................... 288
Обсуждение .......................................................................... 290
Рецепт 94. Переупорядочение полей в файле CSV  ..................... 291
Рецепт 95. Выполнение арифметических операций в строке  
замены ....................................................................................... 292
Шаблон поиска ...................................................................... 293
Команда подстановки ............................................................ 293
Рецепт 96. Перемена местами двух и более слов ....................... 294
Возврат другого слова ........................................................... 295
Поиск совпадений с двумя словами....................................... 295
Все вместе ............................................................................ 295
Обсуждение .......................................................................... 296
Рецепт 97. Поиск и замена в нескольких файлах......................... 297
Команда подстановки ............................................................ 297
Поиск во всех файлах в текущем проекте  
с использованием ':vimgrep' .................................................. 298
Применение команды подстановки ко всем файлам  
в текущем проекте с использованием ':cfdo' .......................... 298
В заключение ........................................................................ 300

Глава 15. Глобализация команд ........................ 301

Рецепт 98. Встречайте: команда :global  ..................................... 301
Рецепт 99. Удаление строк, соответствующих шаблону .............. 302
Удаление соответствующих строк командой :g/re/d .............. 303
Сохранение только соответствующих строк командой  
:v/re/d .................................................................................... 304
Рецепт 100. Выборка комментариев TODO в регистр.................. 304
Обсуждение .......................................................................... 306
Рецепт 101. Сортировка свойств в правилах CSS  ...................... 307
Сортировка свойств внутри одного блока  ............................. 307
Сортировка свойств во всех блоках ....................................... 308
Обсуждение .......................................................................... 310

Содержание

Часть VI. ИНСТРУМЕНТЫ .................................. 311

Глава 16. Индексирование исходного кода  
и навигация по нему с помощью ctags ................ 312
Рецепт 102. Встречайте: ctags .................................................... 312
Установка exuberant ctags ...................................................... 312
Индексирование исходного кода проекта с помощью ctags ........ 313
Анатомия индексного файла .................................................. 313
Ключевые слова адресуются шаблонами, а не номерами  
строк ..................................................................................... 314
Индексирование ключевых слов с помощью метаданных ...... 315
Рецепт 103. Настройка Vim для работы с программой ctags ....... 316
Настройка поиска индексного файла в Vim  ........................... 316
Создание индексного файла ................................................. 316
Обсуждение .......................................................................... 318
Рецепт 104. Навигация по определениям ключевых слов  ........... 318
Переход к определению ключевого слова .............................. 318
Определение точки перехода при наличии нескольких  
совпадений с ключевым словом ...............................................320
Использование команд Ex  ..................................................... 321

Глава 17. Компиляция кода и обзор ошибок  
с помощью Quickfix List .................................... 323
Рецепт 105. Компиляция кода, не покидая Vim ........................... 324
Подготовка ............................................................................ 324
Компиляция проекта в командной оболочке .......................... 324
Компиляция проекта в Vim ..................................................... 325
Рецепт 106. Навигация по списку с результатами ....................... 327
Основы навигации по списку с результатами ......................... 328
Быстрые переходы вперед и назад  ....................................... 329
Окно Quickfix  ......................................................................... 329
Рецепт 107. Восстановление прежнего списка с результатами .... 330
Рецепт 108. Настройка внешнего компилятора .......................... 330
Настройка вызова программы Nodelint командой :make ........ 331
Заполнение списка с результатами на основе вывода  
Nodelint ................................................................................. 332
Настройка makeprg и errorformat единственной командой ..... 333

Глава 18. Поиск в пределах проекта с помощью  
команд grep, vimgrep и других........................... 335

Рецепт 109. Вызов grep, не покидая Vim ..................................... 335

Содержание

Использование grep из командной строки ............................. 336
Вызов grep из редактора Vim ................................................. 336
Рецепт 110. Настройка программы grep  .................................... 337
Настройки по умолчанию команды :grep  ............................... 337
Настройка :grep на вызов команды ack .................................. 338
Переход к строке и позиции в строке при использовании  
ack  ........................................................................................ 340
Рецепт 111. Поиск с использованием внутреннего  
механизма поиска Vim ................................................................ 341
Выбор файлов для поиска ..................................................... 342
Поиск в файле с последующим поиском в проекте ................ 343
История поиска и :vimgrep ..................................................... 343

Глава 19. Набери X и пользуйся  
автодополнением ........................................... 345

Рецепт 112. Встречайте: автодополнение ключевых слов ........... 345
Вызов функции автодополнения ............................................ 347
Рецепт 113. Работа с меню функции автодополнения ................. 347
Обзор списка слов без изменения документа ........................ 348
Изменение документа по мере прокручивания списка слов .... 349
Отклонение вариантов выбора .............................................. 349
Фильтрация списка по мере ввода ........................................ 349
Рецепт 114. Источники ключевых слов ....................................... 350
Буфер .................................................................................... 350
Подключаемые файлы ........................................................... 351
Индексные файлы ................................................................. 351
Объединяем все вместе ........................................................ 352
Рецепт 115. Автодополнение словами из словаря ...................... 353
Рецепт 116. Автодополнение целых строк .................................. 354
Рецепт 117. Автодополнение последовательностей слов ........... 355
Рецепт 118. Автодополнение имен файлов ................................. 357
Рецепт 119. Контекстное автодополнение .................................. 359

Глава 20. Поиск и исправление опечаток в Vim ..... 361

Рецепт 120. Проверьте свой текст .............................................. 361
Принцип действия механизма проверки орфографии в Vim .... 362
Рецепт 121. Использование альтернативных  
орфографических словарей ....................................................... 363
Настройка диалекта языка ..................................................... 363
Получение словарей для других языков ................................. 364
Рецепт 122. Добавление слов в орфографический словарь ........ 364

Содержание

Создание словаря для специальных терминов ...................... 365
Рецепт 123. Исправление орфографических ошибок  
в режиме вставки ....................................................................... 366
Подготовка ............................................................................ 366
Обычный способ: выход в командный режим ......................... 366
Быстрый способ: использовать орфографическое  
автодополнение .................................................................... 366

Глава 21. Что дальше? ..................................... 368
Продолжайте практиковаться! .................................................... 368
Настраивайте Vim под себя ........................................................ 368
Узнайте, как пользоваться пилой, и только потом точите ее ....... 369

Приложение 1. Настройка Vim в соответствии  
с личными предпочтениями ............................. 371
Изменяйте настройки на лету ..................................................... 371
Сохраняйте настройки в файле vimrc  ......................................... 373
Применение настроек для определенных типов файлов ............. 375

Предметный указатель .................................... 377

Благодарности

Спасибо Браму Моленару (Bram Moolenaar) за создание редактора 
Vim и всем, кто участвовал в его разработке. Это – образец программного обеспечения на все времена, и я с нетерпением жду появления новых его версий.
Спасибо всем сотрудникам издательства Pragmatic Bookshelf, работавшим со мной над этой книгой. Особое спасибо Кею Кепплеру (Kay Keppler), моему научному редактору, за то, что помог мне 
стать писателем и написать эту книгу, невзирая на сложности и мои 
вспышки раздражения. Спасибо также Катарине Дворак (Katharine 
Dvorak), моему литературному редактору, за работу над этим изданием. Я также хочу поблагодарить Дэвида Келли (David Kelly) 
за удовлетворение всех моих необычных пожеланий по форматированию текста.
Изначально книга «Практическое использование Vim» задумывалась совсем не как сборник рецептов, но Сюзанна Фалзер (Susannah 
Pfalzer) сказала, что будет лучше придерживаться именно этого формата. Было довольно сложно переписать такой объем информации, 
но мне удалось сделать это с первого раза, чем я был очень доволен. 
Сюзанна знает, как будет лучше, и я благодарен ей за ее видение.
Спасибо Дэйву Томасу (Dave Thomas) и Энди Ханту (Andy Hunt) 
за создание издательства Pragmatic Bookshelf. Я рад, что представлен именно этим издательством, и для меня большая честь, что моя 
книга находится в их каталоге.
Книга «Практическое использование Vim» едва ли появилась бы 
на свет без моих технических обозревателей. Каждый из вас внес 
свой вклад и помог в создании книги. Спасибо вам, Адам МакКри 
(Adam McCrea), Алан Гарднер (Alan Gardner), Алекс Кан (Alex 
Kahn), Али Олвейсити (Ali Alwasity), Андерс Джанмайр (Anders 
Janmyr), Эндрю Дональдсон (Andrew Donaldson), Ангус Нейл 
(Angus Neil), Чарли Танксли (Charlie Tanksley), Чез Мартин (Ches 

Благодарности

Martin), Дэниел Бретой (Daniel Bretoi), Дэвид Моррис (David 
Morris), Денис Горин (Denis Gorin), Элиза Мендес Ризенд (Elyézer 
Mendes Rezende), Эрик Сент Мартин (Erik St. Martin), Федерико Галасси (Federico Galassi), Феликс Гейзендорфер (Felix Geisendo..rfer), 
Флориан Вален (Florian Vallen), Грэм Матисон (Graeme Mathieson), 
Ханс Хассельберг (Hans Hasselberg), Хенрик Них (Henrik Nyh), Хавьер Колладо (Javier Collado), Джефф Холланд (Jeff Holland), Джош 
Салливан (Josh Sullivan), Джошуа Флэнаган (Joshua Flanagan), Кана 
Натсуно (Kana Natsuno), Кент Фрайзер (Kent Frazier), Луис Мерино (Luis Merino), Матиас Мейер (Mathias Meyer), Мэтт Соузерден 
(Matt Southerden), Мислав Мароник (Mislav Marohnic), Митч Гатри 
(Mitch Guthrie), Морган Прайор (Morgan Prior), Пол Бэрри (Paul 
Barry), Питер Аронофф (Peter Aronoff), Питер Рин (Peter Rihn), 
Филип Робертс (Philip Roberts), Роберт Эванс (Robert Evans), Райан Стенхауз (Ryan Stenhouse), Чтивен Рагнарок (Steven Ragnaro..k), 
Тибор Симик (Tibor Simic), Тим Чейз (Tim Chase), Тип Поуп (Tim 
Pope), Тим Тирелл (Tim Tyrrell) и Тобиас Сайлер (Tobias Sailer).
Несмотря на всемерную помощью моих научных редакторов, в 
тексте могли остаться незамеченными некоторые ошибки. Я буду 
благодарен всем, кто сообщит мне об ошибках в книге, поможет их 
найти и исправить.
Документация к редактору Vim – потрясающий источник знаний, 
и я часто буду ссылаться на нее на протяжении всей книги. Я хотел 
бы поблагодарить Карло Тюбнера (Carlo Teubner) за публикацию 
документации к Vim на сайте vimhelp.appspot.com и за постоянное 
ее обновление.
Некоторые советы в первом издании оказались неудачными, но 
я все равно оставил их, потому что считал важными. В этом, пересмотренном издании я смог переписать их. Спасибо Кристиану 
Брабандту (Christian Brabandt) за реализацию качественно новой 
команды gn, благодаря которой я смог поправить совет 84 «Выполнение операций над полным совпадением». Спасибо Йегаппану 
Лакшманану (Yegappan Lakshmanan) за реализацию команды cfdo 
(и родственных ей), благодаря которой я смог поправить совет 97 
«Поиск и замена в нескольких файлах». Я также хочу выразить благодарность Дэвиду Баргину (David Bürgin) за редакцию 7.3.850, что 
исправило мою «любимую» ошибку с командой vimgrep.
Я также хотел бы выразить благодарность всему сообществу 
пользователей Vim за распространение их знаний по всему Интернету. Многие рецепты, что приводятся в этой книге, были найдены 

21

Благодарности

по тегу «Vim» на сайте StackOverflow и в списке рассылки vim_use.
Расширение rails.vim Тима Поупа (Tim Pope) оказало существенное влияние на серьезность моего отношения к Vim. Многие другие 
его расширения также стали обязательной частью Vim для меня. 
Немалую помощь в понимании Vim мне оказали также расширения, 
написанные Каном Натсуно (Kana Natsuno), текстовые объекты которых я считаю лучшим расширением базовой функциональности. 
Спасибо вам обоим, что помогли мне увидеть дополнительные преимущества.
Спасибо Джо Рознеру (Joe Rozner) за предоставленный исходный код, который я использовал для демонстрации команды :make. 
Спасибо Олегу Ефимову (Oleg Efimov) за его мгновенные ответы 
по проблемам nodelint. Спасибо Бену Кормаку (Ben Cormack) за 
иллюстрации.
В январе 2012-го мы приехали в Берлин, где сообщество технических специалистов вдохновило меня на создание данной книги. 
Я благодарен Грегору Шмидту (Gregor Schmidt) за основание Берлинской группы пользователей Vim и Яну Шульцу-Хофену (Jan 
Schulz-Hofen) за предоставленное место для встречи. Общение 
с пользователями Vim по-настоящему помогло мне привести свои 
мысли в порядок, поэтому я благодарен всем, кто посещал наши 
встречи в Берлине. Спасибо вам, Дэниел и Нина Холле (Daniel и 
Nina Holle), за то, что предоставили нам свой дом. Это замечательное место, где можно жить и активно работать.
В марте 2011-го мне потребовалась хирургическая операция на 
кишечнике. К сожалению, в этот момент я оказался далеко от дома, 
но, к счастью, моя жена была со мной. Ханна (Hannah) признала, 
что в южно-синайской больнице мне был обеспечен превосходный 
уход. Я хочу поблагодарить всех сотрудников больницы за помощь 
и доктора Шавкета Гергеса (Shawket Gerges) за удачно проведенную 
операцию.
Когда моя мама узнала, что мне нужна операция, она бросила все 
и ближайшим рейсом вылетела в Египет, несмотря на начавшуюся 
там революцию. Это был смелый поступок! Мне трудно представить, как мы с Ханной справились бы с трудностями без поддержки 
моей мамы и ее жизненного опыта. Я безмерно счастлив, что в моей 
жизни есть две такие замечательные женщины.

22

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

Существует расхожее мнение, что редактор Vim сложен в освоении. 
Я думаю, большинство пользователей Vim не согласятся с этим. Конечно, на первом этапе будут возникать некоторые затруднения, но 
как только вы пройдете обучение с помощью vimtutor и познакомитесь с устройством конфигурационного файла vimrc, вы получите 
почти все необходимые знания, обладая которыми, уже можно хоть 
как-то работать.
А что дальше? Интернет отвечает на этот вопрос: «читайте советы» – рецепты решения конкретных проблем. Вы можете искать 
конкретные рецепты, когда чувствуете, что текущее решение не является оптимальным, или наоборот – активно читать сборники популярных рецептов. Такой подход дает свои плоды – именно так я 
изучал работу с Vim, – но он очень медленный. Разумеется, полезно 
знать, что нажатие * запускает поиск слова под курсором, но едва 
ли это знание поможет вам думать на уровне знатока Vim.
Когда книга «Практическое использование Vim» попала в мои 
руки, я испытывал некоторый скепсис в отношении ее. Как пара 
сотен рецептов может помочь достичь того же уровня, для чего мне 
понадобилось изучить несколько тысяч рецептов? Однако, прочитав 
несколько страниц, я понял, что мое понятие «рецепт» было слишком узким. Вопреки моим ожиданиям рецепты в книге «Практическое использование Vim» не следуют шаблону проблема/решение, 
а представляют собой уроки, учащие думать категориями опытного пользователя Vim. В некотором смысле они больше похожи на 
притчи, чем на рецепты. Первые несколько рецептов учат широко 
использовать команду . – основной инструмент любого опытного 
пользователя Vim, для обнаружения которой без посторонней помощи мне потребовались годы.

Доступ онлайн
699 ₽
В корзину