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

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

Покупка
Артикул: 477138.02.99
Vim - быстрый и эффективный текстовый редактор, способный повысить скорость и эффективность разработки. С помощью более чем 100 рецептов вы быстро освоите основные возможности Vim и сможете заняться решением своих самых необычных задач, связанных с созданием и правкой текста. В данной книге вы найдете новые и эффективные приемы работы с редактором, независимо от того, являетесь ли вы начинающим или опытным пользователем Vim.
Нейл, Д. Практическое использование Vim / Д. Нейл. - Москва : ДМК Пресс, 2014. - 384 с. - ISBN 978-5-94074-972-1. - Текст : электронный. - URL: https://znanium.com/catalog/product/1027826 (дата обращения: 24.04.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
Практическое 
использование Vim

Дрю Нейл

Practical Vim

Drew Neil

Foreword by Tim Pope
Edited by Kay Keppler

The Pragmatic Bookshelf
Dalls, Texas • Raleigh, North Carolina

Edit Text ap the Speed of Thought

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

Москва, 2014

Дрю Нейл

Предисловие Тима Поупа
Под редакцией Кея Кепплера

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

УДК 004.912Vim
ББК 32.973.26-018.2
 
Н38

 
Нейл Д.

Н38 Практическое использование Vim. – М.: ДМК Пресс, 2014. – 

384 с.: ил.

 
ISBN 978-5-94074-972-1

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

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

 
УДК 004.912Vim

 
ББК 32.973.26-018.2

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

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

ISBN 978-1-934356-98-2 (анг.) 
Copyrigth © 2012  The Pragmatic 

 
Bookshelf

ISBN 978-5-94074-972-1 (рус.) 
© Оформление, перевод, 

 
ДМК Пресс, 2014

Что говорят читатели о книге 
«Практическое использование 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
Удаление вперед ................................................................ 57
Удаление целого слова ....................................................... 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. Выполнение команд в оболочке ........................... 115
Запуск программ в командной оболочке ........................... 115
Передача содержимого буфера на вход командам 
или сохранение вывода команд в буфере ......................... 117
Фильтрация содержимого буфера с помощью внешней 
команды ........................................................................... 118
Обсуждение ...................................................................... 119

Содержание

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

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

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

Глава 7. Открытие файлов и их сохранение на диск .... 140
Рецепт 41. Открытие файла по его имени с использованием 
команды :edit ......................................................................... 140
Как открыть файл, указав путь относительно текущего 
рабочего каталога ............................................................. 141
Как открыть файл, указав путь относительно активного 
каталога ........................................................................... 142

Содержание

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

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

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

Содержание

Глава 9. Навигация между файлами ............................ 180
Рецепт 55. Обход списка переходов ...................................... 180
Рецепт 56. Обход списка изменений ..................................... 182
Отметка последнего изменения ........................................ 183
Рецепт 57. Переход к файлу с именем под курсором ............. 184
Определение расширения файла ..................................... 185
Определение списка каталогов для поиска ....................... 185
Обсуждение ...................................................................... 186
Рецепт 58. Переключение между файлами с помощью 
глобальных меток .................................................................. 187
Устанавливайте глобальную метку перед погружением 
в код ................................................................................. 188

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

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

Содержание

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

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

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

Содержание

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

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

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

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

Содержание

Глава 13. Поиск ................................................................ 253
Рецепт 79. Встречайте: команда поиска ................................ 253
Выполнение команды поиска ............................................ 254
Определение направления поиска .................................... 254
Повторение последней команды поиска ........................... 254
История поиска ................................................................ 255
Рецепт 80. Подсветка совпадений ......................................... 256
Отключение подсветки совпадений  ................................. 256
Рецепт 81. Предварительный просмотр первого 
совпадения ........................................................................... 257
Проверка существования совпадения .............................. 258
Автодополнение поля ввода шаблона с опорой 
на предварительные результаты поиска ........................... 258
Рецепт 82. Подсчет совпадений с текущим шаблоном ........... 259
Рецепт 83. Смещение курсора относительно конца 
совпадения ........................................................................... 259
Рецепт 84. Выполнение операций над полным совпадением ... 262
Рецепт 85. Создание сложных шаблонов с использованием 
истории поиска ..................................................................... 265
1: Максимальное совпадение ........................................... 265
2: Доработка ..................................................................... 266
3: Еще один цикл ............................................................... 267
4: Последний штрих .......................................................... 268
Обсуждение ...................................................................... 268
Рецепт 86. Поиск текущего визуального выделения .............. 269
Поиск текущего слова в визуальном режиме .................... 269
Поиск текущего выделения (прототип) ............................. 270
Поиск текущего выделения (окончательная версия) ......... 270

Глава 14. Подстановка .................................................... 272
Рецепт 87. Встречайте: команда подстановки ....................... 272
Настройка поведения команды подстановки с помощью 
флагов .............................................................................. 273
Специальные символы в строке замены ........................... 274
Рецепт 88. Поиск и замена всех совпадений в файле ............ 274
Рецепт 89. Подтверждение каждой подстановки ................... 276
Обсуждение ...................................................................... 277
Рецепт 90. Повторное использование последнего шаблона 
поиска ................................................................................... 278

Содержание

Этот прием подходит не всегда ......................................... 279
Влияние на историю команд ............................................. 279
Рецепт 91. Замена содержимым регистра ............................. 280
Передача по значению ...................................................... 280
Передача по ссылке .......................................................... 281
Сравнение ........................................................................ 281
Рецепт 92. Повторение предыдущей команды подстановки .... 282
Повторение команды подстановки в строке ко всему 
файлу ............................................................................... 283
Изменение диапазона в команде подстановки.................. 283
Обсуждение ...................................................................... 285
Рецепт 93. Переупорядочение полей в файле CSV  ................ 286
Рецепт 94. Выполнение арифметических операций 
в строке замены .................................................................... 287
Шаблон поиска ................................................................. 288
Команда подстановки ....................................................... 288
Рецепт 95. Перемена местами двух и более слов .................. 289
Возврат другого слова ...................................................... 290
Поиск совпадений с двумя словами .................................. 290
Все вместе ....................................................................... 290
Обсуждение ...................................................................... 291
Рецепт 96. Поиск и замена в нескольких файлах.................... 292
Команда подстановки ....................................................... 292
Применение команды подстановки ко всем файлам 
в текущем проекте ............................................................ 293
Конструирование списка файлов, содержащих 
совпадения с шаблоном ................................................... 294

Глава 15. Глобализация команд ................................... 297
Рецепт 97. Встречайте: команда :global  ................................ 297
Рецепт 98. Удаление строк, соответствующих шаблону ......... 298
Удаление соответствующих строк командой :g/re/d .......... 299
Сохранение только соответствующих строк командой 
:v/re/d ............................................................................... 300
Рецепт 99. Выборка комментариев TODO в регистр .............. 300
Обсуждение ...................................................................... 302
Рецепт 100. Сортировка свойств в правилах CSS  ................. 303
Сортировка свойств внутри одного блока  ........................ 303
Сортировка свойств во всех блоках .................................. 304
Обсуждение ...................................................................... 306

Содержание

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

Глава 16. Индексирование исходного кода 
и навигация по нему с помощью ctags ........................ 308

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

Глава 17. Компиляция кода и обзор ошибок 
с помощью Quickfix List .................................................. 319

Рецепт 104. Компиляция кода, не покидая Vim ...................... 320
Подготовка ....................................................................... 320
Компиляция проекта в командной оболочке ..................... 320
Компиляция проекта в Vim ................................................ 321
Рецепт 105. Навигация по списку с результатами .................. 323
Основы навигации по списку с результатами .................... 324
Быстрые переходы вперед и назад  .................................. 324
Окно Quickfix  .................................................................... 325
Рецепт 106. Восстановление прежнего списка 
с результатами ...................................................................... 325
Рецепт 107. Настройка внешнего компилятора ..................... 326
Настройка вызова программы Nodelint командой :make ... 327
Заполнение списка с результатами на основе вывода 
Nodelint ............................................................................. 328
Настройка makeprg и errorformat единственной 
командой .......................................................................... 329

Содержание

Глава 18. Поиск в пределах проекта с помощью 
команд grep, vimgrep и других ...................................... 331
Рецепт 108. Вызов grep, не покидая Vim ................................ 331
Использование grep из командной строки ........................ 332
Вызов grep из редактора Vim ............................................ 332
Рецепт 109. Настройка программы grep  ............................... 333
Настройки по умолчанию команды :grep  .......................... 333
Настройка :grep на вызов команды ack ............................. 334
Переход к строке и позиции в строке 
при использовании ack  .................................................... 336
Рецепт 110. Поиск с использованием внутреннего 
механизма поиска Vim ........................................................... 337
Поиск в файле с последующим поиском в проекте ........... 337
История поиска и :vimgrep ................................................ 338

Глава 19. Набери X и пользуйся 
автодополнением ............................................................ 339
Рецепт 111. Встречайте: автодополнение ключевых слов ...... 339
Вызов функции автодополнения ....................................... 341
Рецепт 112. Работа с меню функции автодополнения ............ 341
Обзор списка слов без изменения документа ................... 342
Изменение документа по мере прокручивания списка 
слов .................................................................................. 343
Отклонение вариантов выбора ......................................... 343
Фильтрация списка по мере ввода .................................... 343
Рецепт 113. Источники ключевых слов .................................. 344
Буфер ............................................................................... 344
Подключаемые файлы ...................................................... 345
Индексные файлы ............................................................. 345
Объединяем все вместе ................................................... 346
Рецепт 114. Автодополнение словами из словаря ................. 347
Рецепт 115. Автодополнение целых строк ............................. 348
Рецепт 116. Автодополнение имен файлов ............................ 349
Рецепт 117. Контекстное автодополнение ............................. 351

Глава 20. Поиск и исправление опечаток в Vim......... 353
Рецепт 118. Проверьте свой текст ......................................... 353
Принцип действия механизма проверки орфографии 
в Vim ................................................................................. 354

Содержание

Рецепт 119. Использование альтернативных 
орфографических словарей .................................................. 355
Настройка диалекта языка ................................................ 355
Получение словарей для других языков ............................ 356
Рецепт 120. Добавление слов в орфографический словарь ... 356
Создание словаря для специальных терминов .................. 357
Рецепт 121. Исправление орфографических ошибок 
в режиме вставки .................................................................. 358
Подготовка ....................................................................... 358
Обычный способ: выход в командный режим .................... 358
Быстрый способ: использовать орфографическое 
автодополнение ............................................................... 358

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

Приложение 1. Настройка Vim в соответствии 
с личными предпочтениями .......................................... 363
A1.1. Изменяйте настройки на лету ....................................... 363
A1.2. Сохраняйте настройки в файле vimrc  ........................... 365
A1.3. Применение настроек для определенных типов 
файлов .................................................................................. 367

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

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

Спасибо Браму Моленару (Bram Moolenaar) за создание редактора 
Vim и всем, кто участвовал в его разработке. Это – образец программного обеспечения на все времена, и я с нетерпением жду появления новых его версий.
Спасибо всем сотрудникам издательства Pragmatic Bookshelf, работавшим со мной над этой книгой. Особое спасибо Кею Кепплеру (Kay Keppler), моему научному редактору, за то, что помог мне 
стать писателем и написать эту книгу, невзирая на сложности и мои 
вспышки раздражения. Я также хочу поблагодарить Дэвида Келли 
(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 за распространение их знаний по всему Интернету. Многие рецепты, что приводятся в этой книге, были найдены 
по тегу «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 и 

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

Nina Holle), за то, что предоставили нам свой дом. Это замечательное место, где можно жить и активно работать.
В марте 2011-го мне потребовалась хирургическая операция на 
кишечнике. К сожалению, в этот момент я оказался далеко от дома, 
но, к счастью, моя жена была со мной. Ханна (Hannah) признала, 
что в южно-синайской больнице мне был обеспечен превосходный 
уход. Я хочу поблагодарить всех сотрудников больницы за помощь 
и доктора Шавкета Гергеса (Shawket Gerges) за удачно проведенную 
операцию.
Когда моя мама узнала, что мне нужна операция, она бросила все 
и ближайшим рейсом вылетела в Египет, несмотря на начавшуюся 
там революцию. Это был смелый поступок! Мне трудно представить, как мы с Ханной справились бы с трудностями без поддержки 
моей мамы и ее жизненного опыта. Я безмерно счастлив, что в моей 
жизни есть две такие замечательные женщины.

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

Предисловие

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