11 советов по Vim, которые сэкономят вам часы редактирования
Хотите поднять свою игру Vim на новый уровень? За время использования Vim я усвоил множество полезных советов и приемов, которые сэкономили мне массу времени и избавили от головной боли при редактировании с помощью Vim. В этом руководстве я делюсь некоторыми из своих главных советов, чтобы вы могли включить их в свой рабочий процесс.
1 Быстрое перемещение курсора
Vim создан для эффективной навигации без использования мыши или клавиш со стрелками. Знание команд Vim для перемещения курсора может сэкономить вам много времени и здравомыслия при работе с большими файлами. Vim предоставляет несколько способов быстрого перемещения курсора: от перемещения по символам, словам и абзацам до перехода к определенным местам.
Помимо клавиш со стрелками, для перемещения по символам вы можете использовать H (влево), J (вниз), K (вверх) и L (вправо). Вы также можете добавить число перед символом, чтобы перейти на это количество символов. Итак, нажатие 5j переместит курсор на пять строк. Для перемещения на большие расстояния у вас есть:
- w: Перейти к началу следующего слова.
- W: переход к началу следующего слова после пробела.
- б: Перейти к началу предыдущего слова.
- B: переход к началу предыдущего слова перед пробелом.
- e: переход к концу текущего слова.
- E: переход к концу слова перед пробелом.
- 0: переход к началу строки.
- $: перейти в конец строки
Более того, если вы хотите перейти к определенной строке, введите номер этой строки, а затем используйте G, чтобы перейти к этой строке. Итак, если вы хотите перейти к строке 500, введите 500G и нажмите, чтобы перейти к этой строке.
2 Преобразование табуляции в пробелы и пробелов в табуляцию
Распространенной проблемой, с которой сталкиваются разработчики и создатели контента, является несогласованность отступов. Некоторые команды или проекты могут предпочитать табуляции для отступов, тогда как другие предпочитают пробелы. В Vim вы можете конвертировать табуляции в пробелы и наоборот, в зависимости от конкретных требований вашего проекта.
Если вы хотите преобразовать все пробелы обратно в табуляции в существующем файле, выполните эти две команды:
:set noexpandtab
:retab!
Первая команда гарантирует, что вместо пробелов будут использоваться табуляции. Второй обеспечивает преобразование пробелов обратно в символы табуляции на основе настройки табуляции.
Если вы предпочитаете пробелы и хотите преобразовать табуляции в существующий файл, запустите:
:set expandtab
:set tabstop=4
:set shiftwidth=4
:retab
Эти команды сообщают Vim о деталях блока отступов при преобразовании табуляции в пробелы.
3 Отступ в нескольких строках
Отступы — это хорошая практика для поддержания чистоты и организованности вашего файла. Если вы работаете с таким языком, как Python, то правильные отступы становятся более важными. С помощью одной команды вы можете сделать отступ для всех строк в файле. Сначала введите gg, чтобы перейти к первой строке файла (это может быть еще одним полезным советом). Затем введите =G, чтобы сделать отступ в строках. Итак, последняя команда:
gg=G
4 Выделить орфографические ошибки
Я делаю много опечаток и ошибок при быстром наборе текста. В современных текстовых процессорах, таких как Microsoft Word и Google Docs, есть программа проверки орфографии, которая предлагает правильно написанное слово. Vim также имеет встроенную проверку орфографии. Он выделит слова, которые, по его мнению, были написаны с ошибками. Чтобы включить проверку орфографии, используйте следующую команду:
:set spell
5 Изменить направление визуального выбора
Работая в визуальном режиме, вы можете выделять текст по символу, строке или блоку. Начав выделять текст в любом направлении, вы можете понять, что вам нужно расширить или изменить выделение в противоположном направлении. Вместо того, чтобы выходить из визуального режима и начинать выбор заново, вы можете изменить направление выбора, нажав кнопку o.
6 Перейти к соответствующей скобке
При работе с большой базой кода часто требуется найти конец блока кода. Если код не имеет хорошего форматирования и отступов, это сложно. В Vim вы можете легко найти начало или конец блока кода, перейдя к соответствующей скобке. Нажатие знака процента (%) делает именно это. Если вы находитесь на открывающей скобке и нажимаете %, вы перейдете к конечной скобке и наоборот.
Это работает для круглых, фигурных и квадратных скобок.
7 Отображение номеров строк
Это довольно легко. По умолчанию Vim не показывает номера строк, только знаки тильды. Вы можете включить номера строк в Vim в разных режимах. В режиме абсолютного номера строки вы видите номера строк, начиная с одной и до последней. Чтобы настроить это, выполните следующую команду:
:set number
В режиме относительных чисел строка, на которой находится курсор, является нулевой строкой. Остальные строки нумеруются относительно строки, на которой находится курсор. Итак, строки над и под курсором начинаются с единицы и продолжаются. Чтобы включить относительную нумерацию, выполните:
:set relativenumber
Что, если вам нужны оба? Есть еще один режим, называемый гибридным, в котором вы можете использовать оба. При включении гибридного режима строка, на которой находится курсор, показывает ее абсолютный номер строки. Но строки выше и ниже показывают их относительные номера. Включите этот режим, выполнив:
:set number relativenumber
8 Обычный режим
Команда :norm в Vim позволяет запускать команды обычного режима из режима командной строки. Это полезно для повторяющихся задач и пакетного редактирования. Если вам нужно применить одни и те же команды обычного режима к нескольким строкам одновременно, вы можете сделать это, написав одну строку, а не повторяя одно и то же для каждой строки.
Например, я хочу добавить точку с запятой (;) в конце нескольких строк. Сначала мне нужно выделить все строки. Затем запустите эти команды:
:norm
A;
Как только я нажму Enter, все выбранные строки будут иметь точку с запятой в конце.
Аналогичным образом вы можете вставлять текст, менять регистр или делать отступы для нескольких строк одновременно.
9 Удаление текста в режиме вставки
В традиционных текстовых редакторах существует множество сочетаний клавиш для удаления символов и слов. Vim имеет собственный набор ярлыков для быстрого удаления фрагментов текста. Вы можете удалять символы, слова и целые строки. Удалить можно как в обратном, так и в прямом направлении курсора. Вот несколько полезных ярлыков:
- Ctrl+H: удаляет один символ назад (аналогично Backspace).
- Ctrl+W: удаляет одно слово назад.
- Ctrl+U: удаляет все от курсора до начала строки.
- Ctrl+K: удаляет все от курсора до конца строки.
10 Динамические фрагменты
Фрагменты — это заранее определенные фрагменты текста, которые вы можете быстро вставить, чтобы ускорить рабочий процесс. Вместо многократного ввода одного и того же шаблонного кода или текста вы можете использовать фрагменты, чтобы быстро развернуться в более длинный текстовый блок, экономя время и уменьшая количество опечаток. Динамические фрагменты идут еще дальше, позволяя включать в себя динамический контент, например текущее время, дату или другую переменную информацию.
Используя такие плагины, как UltiSnips или vim-snippets, вы можете определять динамические фрагменты, которые настраиваются в зависимости от текущего контекста. Например, давайте создадим фрагмент, чтобы расширить «jd» до John Doe. Если вы используете UltiSnips, добавьте следующее в свой файл UltiSnips (обычно ~/.vim/UltiSnips/snippet_file_name.snippets:)
snippet jd
John Doe
endsnippet
Для динамических фрагментов, таких как время и дата, вы можете отформатировать их следующим образом:
snippet time
`!v strftime("%H:%M:%S")`
endsnippet
Теперь, если вы наберете «время» и нажмете кнопку Tab, вы должны автоматически вставить текущее время.
11 Автозаполнение слов
Vim имеет встроенную функцию завершения слов. Это может быть полезно при написании чего-то, где слово встречается часто (например, переменных в программе). Чтобы автозаполнить слово, начните его вводить и нажмите Ctrl+N. Вы также можете нажать Ctrl+P. Разница в том, что последний ищет в списке снизу (последнее слово), а первый ищет сверху.
Благодаря этим новым советам вы сможете использовать Vim с большей уверенностью. У нас также есть другие руководства, которые покажут вам, как выйти из Vim и определить профиль Vim.