Программирование с использованием нескольких курсоров всегда было для меня загадкой. Я видел это раньше, копаясь в настройках редактора, но до недавнего времени я никогда не пытался его попробовать. Теперь я использую его каждый день и продолжаю находить новые способы ускорить утомительные задачи.
Множественные курсоры — это именно то, на что это похоже: это позволяет вам размещать более одного курсора в вашем редакторе, чтобы вы могли редактировать несколько мест одновременно. Звучит как больше проблем, чем того стоит, но как только вы выучите ярлыки, это станет естественным.
В настоящее время Visual Studio Code — мой любимый редактор, и он поставляется с поддержкой нескольких курсоров из коробки. Вот важные сочетания клавиш в Visual Studio Code (в Windows):
- Alt+щелчок: поместите новый курсор в то место, где вы щелкаете.
- Ctrl+Alt+Down: добавить новый курсор под текущий.
- Ctrl+Alt+Up: добавить новый курсор над текущим.
Вот об этом. После того, как вы установили курсоры, вы можете печатать как обычно, и ваши изменения будут применяться к каждому местоположению курсора.
Конечно, ваши линии не всегда будут выравниваться так хорошо, поэтому вам, возможно, придется использовать умную комбинацию других ярлыков для достижения вашей цели. Вот некоторые из них, которыми я пользуюсь постоянно:
- Home: Переместить курсор в начало строки
- Конец: переместить курсор в конец строки
- Ctrl+Left: Переместить курсор на одно слово влево
- Ctrl+Right: Переместить курсор на одно слово вправо
- Shift+[любой из вышеперечисленных]: выбор из предыдущей позиции в новую позицию
- Ctrl+Backspace: удалить одно слово слева
- Ctrl+Delete: Удалить одно слово справа
Чтобы проиллюстрировать, вот несколько случаев, с которыми я столкнулся, когда я широко использовал несколько курсоров.
Слияние строк в одну
Начнем с простого. Допустим, вы откуда-то скопировали список имен:
Траут
Судья
Вотто
Блэкмон
Стэнтон
(Бонусные баллы, если вы знаете, почему я выбрал эти имена.) И вы хотели поместить их в строку, разделенную запятыми. Вы можете вручную свести их в одну строку и добавить запятые между ними. Или…
Подождите… что только что произошло? Шаг за шагом:
- Вставить имена (Ctrl+V)
- Перейти к началу последней строки (Ctrl+Left)
- Вставьте курсоры в строки 4, 3 и 2 (Ctrl+Alt+Up, 3 раза)
- Собрать все имена в одну строку (Backspace)
- Разделяйте запятыми
Это всего 8 отдельных нажатий клавиш. Вы можете себе представить, насколько это ускорило бы работу, если бы у вас был более длинный список.
Добавление к смещенным местоположениям
Вернитесь к примеру во вступлении. Было легко размещать курсоры с помощью Ctrl+Alt+Up, потому что нам нужно было, чтобы курсоры находились в одной и той же позиции в каждой строке (т. е. они выстраивались вертикально). Что, если нам нужно их компенсировать? Мы могли бы использовать Alt+Click для размещения каждого курсора по отдельности, но это заняло бы некоторое время, если бы у вас было много строк. Вместо этого давайте воспользуемся преимуществами других навигационных клавиш.
Шаг за шагом:
- Вставить курсоры на строки ниже (Ctrl+Alt+Down, 4 раза)
- Перейти вперед на одно слово (Ctrl+Right)
- Перейти вправо от имени переменной (вправо, 2 раза)
- Введите текст
Обратите внимание, как после шага 2 курсоры смещены по вертикали, но все они находятся в одном и том же положении относительно переменных.
Размещение курсоров с помощью «Найти»
Линии, которые нас интересуют, не всегда будут находиться друг над другом. Они могут быть в разных частях файла. К счастью, мы можем использовать старый добрый «Найти», чтобы выбрать все интересующие нас области и навести на них курсоры.
Например, рассмотрим файл с несколькими интерфейсами и классами. Как мы можем выбрать и скопировать имена каждого интерфейса и класса?
Шаг за шагом:
- Найдите все вхождения слова «экспорт» (Ctrl+F, введите «экспорт», Esc)
- Выделить все найденные совпадения (Ctrl+Shift+L)
- Перемещение курсоров после имен интерфейсов/классов (Ctrl+Right, 2 раза)
- Выберите имена интерфейсов/классов (Ctrl+Shift+Left)
- Копировать (Ctrl+C)
Я сделал это проще, используя «экспорт» в качестве привязки, но вы можете выполнять более сложные поиски, используя регулярные выражения. Например, если бы слов «экспорт» не было, я мог бы использовать следующее регулярное выражение, чтобы найти каждое вхождение интерфейса/класса, с которого начинается строка:
^(интерфейс|класс)
В остальном процесс будет таким же.
Замена нескольких слов другими словами
Наконец, давайте посмотрим, как вы можете одновременно заменить несколько слов разными словами. Опять же, скажем, вы откуда-то скопировали список из 5 имен:
Эскобар
Гордон
Запах
Пераза
Суонсон
Если вы поместите ровно 5 курсоров в свой файл и вставите, 1 имя будет вставлено в каждое место курсора. GIF стоит тысячи слов:
Я опущу шаги — попробуйте сами!