Практическое использование Vim
Покупка
Тематика:
Текстовые редакторы
Издательство:
ДМК Пресс
Автор:
Нейл Дрю
Под ред.:
Кепплер Кей
Предисл.:
Поуп Тим
Год издания: 2014
Кол-во страниц: 384
Дополнительно
Вид издания:
Практическое пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-94074-972-1
Артикул: 477138.02.99
Vim - быстрый и эффективный текстовый редактор, способный повысить скорость и эффективность разработки. С помощью более чем 100 рецептов вы быстро освоите основные возможности Vim и сможете заняться решением своих самых необычных задач, связанных с созданием и правкой текста. В данной книге вы найдете новые и эффективные приемы работы с редактором, независимо от того, являетесь ли вы начинающим или опытным пользователем Vim.
Тематика:
ББК:
УДК:
ОКСО:
- ВО - Бакалавриат
- 02.03.01: Математика и компьютерные науки
- 02.03.02: Фундаментальная информатика и информационные технологии
- 09.03.01: Информатика и вычислительная техника
- 09.03.02: Информационные системы и технологии
- 09.03.03: Прикладная информатика
- 09.03.04: Программная инженерия
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов.
Для полноценной работы с документом, пожалуйста, перейдите в
ридер.
Практическое использование 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, для обнаружения которой без посторонней помощи мне потребовались годы.