Хотите узнать, как повысить эффективность при изменении большого количества строк в Neovim или Vim? Хотите более быстрый способ, чем пытаться вспомнить, как работают регулярные выражения? Я поделюсь с вами плагином, который я использую, который позволяет мне быстро использовать несколько курсоров для изменения текста.

Вот несколько различных параметров, которые вы можете использовать при внесении многострочных изменений:

Макросы

Нужно многократно применять многострочное изменение в файлах (буферах) или в одном и том же файле?

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

Макросы встроены в Neovim / Vim, поэтому при их использовании не нужно устанавливать какие-либо другие плагины.

Рабочий процесс:

  • Нажмите q и другую букву (например, q или w) — начнется запись макроса.
  • Внесите изменения (например, ciw ‹text›), затем выйдите из режима вставки и перейдите к следующей строке.
  • Примените макрос, используя @ (например, 3@q применит ваш макрос q 3 раза)

Недостатки:

  • Очень легко ошибиться при вводе клавиши, что вынудит вас перезаписать весь макрос. Так что будьте готовы записать пару раз, если у вас действительно не получится сделать это с первой попытки.
  • Поскольку вам нужно быть идеальным, это заставляет меня приостановить свой обычный поток и кажется ненужным замедлением.

Регулярное выражение заменить

Еще одна встроенная опция внутри Neovim/Vim — сопоставление текста с использованием регулярного выражения, а затем замена этого текста чем-то другим.

Обычный сопоставитель называется «борьба с одноглазым Кирби», если вы хотите выделить текст, а затем добавить текст до или после него.

Ниже приведен пример добавления текста перед:

:%s/\(.*\)/bar\1/g

Рабочий процесс:

  • В визуальном режиме или режиме визуальной строки выделите текстовый блок, в котором вы хотите заменить текст (если вы хотите заменить текст во всем файле, пропустите…