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

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

В настоящее время Visual Studio Code — мой любимый редактор, и он поставляется с поддержкой нескольких курсоров из коробки. Вот важные сочетания клавиш в Visual Studio Code (в Windows):

  • Alt+щелчок: поместите новый курсор в то место, где вы щелкаете.
  • Ctrl+Alt+Down: добавить новый курсор под текущий.
  • Ctrl+Alt+Up: добавить новый курсор над текущим.

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

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

  • Home: Переместить курсор в начало строки
  • Конец: переместить курсор в конец строки
  • Ctrl+Left: Переместить курсор на одно слово влево
  • Ctrl+Right: Переместить курсор на одно слово вправо
  • Shift+[любой из вышеперечисленных]: выбор из предыдущей позиции в новую позицию
  • Ctrl+Backspace: удалить одно слово слева
  • Ctrl+Delete: Удалить одно слово справа

Чтобы проиллюстрировать, вот несколько случаев, с которыми я столкнулся, когда я широко использовал несколько курсоров.

Слияние строк в одну

Начнем с простого. Допустим, вы откуда-то скопировали список имен:

Траут
Судья
Вотто
Блэкмон
Стэнтон

(Бонусные баллы, если вы знаете, почему я выбрал эти имена.) И вы хотели поместить их в строку, разделенную запятыми. Вы можете вручную свести их в одну строку и добавить запятые между ними. Или…

Подождите… что только что произошло? Шаг за шагом:

  1. Вставить имена (Ctrl+V)
  2. Перейти к началу последней строки (Ctrl+Left)
  3. Вставьте курсоры в строки 4, 3 и 2 (Ctrl+Alt+Up, 3 раза)
  4. Собрать все имена в одну строку (Backspace)
  5. Разделяйте запятыми

Это всего 8 отдельных нажатий клавиш. Вы можете себе представить, насколько это ускорило бы работу, если бы у вас был более длинный список.

Добавление к смещенным местоположениям

Вернитесь к примеру во вступлении. Было легко размещать курсоры с помощью Ctrl+Alt+Up, потому что нам нужно было, чтобы курсоры находились в одной и той же позиции в каждой строке (т. е. они выстраивались вертикально). Что, если нам нужно их компенсировать? Мы могли бы использовать Alt+Click для размещения каждого курсора по отдельности, но это заняло бы некоторое время, если бы у вас было много строк. Вместо этого давайте воспользуемся преимуществами других навигационных клавиш.

Шаг за шагом:

  1. Вставить курсоры на строки ниже (Ctrl+Alt+Down, 4 раза)
  2. Перейти вперед на одно слово (Ctrl+Right)
  3. Перейти вправо от имени переменной (вправо, 2 раза)
  4. Введите текст

Обратите внимание, как после шага 2 курсоры смещены по вертикали, но все они находятся в одном и том же положении относительно переменных.

Размещение курсоров с помощью «Найти»

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

Например, рассмотрим файл с несколькими интерфейсами и классами. Как мы можем выбрать и скопировать имена каждого интерфейса и класса?

Шаг за шагом:

  1. Найдите все вхождения слова «экспорт» (Ctrl+F, введите «экспорт», Esc)
  2. Выделить все найденные совпадения (Ctrl+Shift+L)
  3. Перемещение курсоров после имен интерфейсов/классов (Ctrl+Right, 2 раза)
  4. Выберите имена интерфейсов/классов (Ctrl+Shift+Left)
  5. Копировать (Ctrl+C)

Я сделал это проще, используя «экспорт» в качестве привязки, но вы можете выполнять более сложные поиски, используя регулярные выражения. Например, если бы слов «экспорт» не было, я мог бы использовать следующее регулярное выражение, чтобы найти каждое вхождение интерфейса/класса, с которого начинается строка:

^(интерфейс|класс)

В остальном процесс будет таким же.

Замена нескольких слов другими словами

Наконец, давайте посмотрим, как вы можете одновременно заменить несколько слов разными словами. Опять же, скажем, вы откуда-то скопировали список из 5 имен:

Эскобар
Гордон
Запах
Пераза
Суонсон

Если вы поместите ровно 5 курсоров в свой файл и вставите, 1 имя будет вставлено в каждое место курсора. GIF стоит тысячи слов:

Я опущу шаги — попробуйте сами!