128

Приемы редактирования текста в VS Code: мультикурсор

Visual Studio Code - текстовый редактор с отрытым исходным кодом, развиваемый компанией Microsoft. Благодаря огромному количеству расширений, написанных энтузиастами, эту программу можно превратить в мощный инструмент для широкого спектра задач, от програмирования до редактирования текстовых публикаций.


При работе с текстовыми файлами часто возникает необходимость массового редактирования некоторых фрагментов. С простыми случаями (заменить 'abc' на 'def') справляется интуитивно понятная функция автозамены, которая есть в любом распространённом редакторе. Но что делать, если Вам нужно, например, найти все слова, начинающиеся на букву "t", и поменять их местами со словом, которое идет после них?


Мультикурсор через поиск


Для начала давайте разберёмся, как составить выражение для поиска. Откроем стандатное окно поиска командой Ctrl-F (от слова Find) и вводим ' t'. Редактор автоматически подсвечивает найденные места (буква t, перед которой есть пробел), и мы можем заметить, что забыли о словах, перед которыми стоит знак препинания (например, кавычка или дефис). К счастью, в задачах вроде нашей приходят на помощь регулярные выражения, в частности, вида '\Wt', где \W - специальная последовательность, обозначающая начало слова. Активировать функцию "регулярок" можно кнопкой .*


Регулярные выражения - это отдельная очень большая тема. Если кому-то интересно, пишите в комментариях - напишу отдельный пост, посвященный им. Также можете изучить их самостоятельно на regexone.com и потренироваться на regex101.com


Теперь мы можем нажать Alt-Enter, и редактор вставит по курсору в каждом месте, где был найден искомый фрагмент:

Обратите внимание, что курсоры можно перемещать стрелками, а также выделять фрагменты, зажимая Shift. Так как Ctrl со стрелками позволяет перемещаться до конца слова, нажатием Ctrl-Shift-вправо я могу выделить каждое найденное слово:

после выделения слова я дополнительно выделил еще один символ, чтобы "захватить" последующий пробел или знак препинания


Теперь можно вырезать выделенные фрагменты (Ctrl-X), переместиться на одно слово вправо (Ctrl-вправо) и вставить их (Ctrl-V). Если количество курсоров при вставке осталось неизменным, то каждый вырезанный фрагмент будет вставлен на своё место:

Конечно, пример "высосан из пальца", но есть немало задач, где этот способ будет полезен. Например, найти и заменить все email-адреса в тексте, исправить тэги в html или xml файле, поменять местами колонки в файле csv.


Вставка мультикурсора вручную


Множественные курсоры можно также вставить вручную, командами Ctrl-D (следующий совпадающий с выделенным фрагмент) и Ctrl-Shift-L (вставить курсоры в каждый фрагмент, совпадающий с выделенным). Например, я выделил фрагмент 'текст' и два раза нажал Ctrl-D:

Кстати, вам не нужно заучивать сочетания клавиш, которые я упомянул. Достаточно лишь запомнить "магическую" команду Ctrl-Shift-P, которая даёт доступ ко всем командам:

Причём поиск "умный", позволяет находить команды по первым буквам, например:

В эта статье я рассказал лишь о нескольких функциях, которыми обладает этот редактор. Вы можете найти больше полезной информации на официальном сайте: Visual Studio Code Tips and Tricks. Поделитесь в комментариях, какие функции и расширения VS Code Вы считаете самыми полезными.


TL;DR

Основные команды:

Ctrl-D - добавлять курсоры по одному, на каждое совпадение (с выделенным куском)

Ctrl-Shift-L - добавить курсоры на все совпадения

Alt-Enter (в окошке поиска) - добавить курсоры на все совпадения к запросу

MS, Libreoffice & Google docs

781 пост15K подписчика

Правила сообщества

1. Не нарушать правила Пикабу

2. Публиковать посты соответствующие тематике сообщества

3. Проявлять уважение к пользователям

4. Не допускается публикация постов с вопросами, ответы на которые легко найти с помощью любого поискового сайта.

По интересующим вопросам можно обратиться к автору поста схожей тематики, либо к пользователям в комментариях


Важно - сообщество призвано помочь, а не постебаться над постами авторов! Помните, не все обладают 100 процентными знаниями и навыками работы с Office. Хотя вы и можете написать, что вы знали об описываемом приёме раньше, пост неинтересный и т.п. и т.д., просьба воздержаться от подобных комментариев, вместо этого предложите способ лучше, либо дополните его своей полезной информацией и вам будут благодарны пользователи.

Утверждения вроде "пост - отстой", это оскорбление автора и будет наказываться баном.

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий

Я правильно понимаю, что это тупо текстовый редактор? Ебучий текстовый редактор на...электроне...Зачем?

Чем он лучше обычной IDE? Той же VS.

Или, чем он лучше других текстовых редакторов типо notepad++?

И, простите, какого хуя текстовый редактор запускается 3 секунды с ssd? И жрёт сука на простом файлике 300 мб озу.

раскрыть ветку (12)
0
Автор поста оценил этот комментарий

зависит от языка. Для JS/C#/Python VS Code отлично подходит, для C++ лучше VS.

раскрыть ветку (10)
1
Автор поста оценил этот комментарий

Для C# подходит лишь в случае, если у вас одновременно мак/линукса и нет денег на Rider.

раскрыть ветку (5)
1
Автор поста оценил этот комментарий

не буду спорить. Просто все шарписты в нашей команде почему-то сидят на VSC. Спрошу у них, вдруг им денег занять

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Может они человеки-оркестры, а не просто шарписты? Если пописывать параллельно много на динамических языках, вроде питона, то, возможно, есть смысл так страдать.


Как шарпист, еще ни разу не встречал конторы, которая не предлагала хотя бы R# к студии (это практически корп.стандарт де факто), но последние полгода вижу тенденцию с альтернативой в виде Rider. Хотя я за собой персональную таскаю) На самом деле очень удачная альтернатива даже титану Visual Studio под виндами даже за свои деньги.

раскрыть ветку (3)
Автор поста оценил этот комментарий

Я вот наоборот Rider не переношу. Когда сажусь за комп коллеги, постоянно от него плююсь, и хоткеи кардинально отличаются, и навигация. ИМХО студия 2019я очень продвинулась, и уже года полтора пользуюсь ей даже без решарпера, вполне удобно.

А VS Code активно использую параллельно - именно как текстовый редактор: поковырять json или xml, или фронт на ангуляре немного поковырять и запустить. Но с дебагом C# кода конечно до студии очень далеко.

раскрыть ветку (2)
0
Автор поста оценил этот комментарий

хоткеи кардинально отличаются

Что говорит нам о том, что вы никогда не работали с решарпером. Это не плохо, просто вкусовщина, но не кейс для большинства шарпистов. Ибо шорткаты туда переехали.


А VS Code активно использую параллельно - именно как текстовый редактор

Вот тут поддерживаю.

раскрыть ветку (1)
Автор поста оценил этот комментарий

С решарпером работал прежде, но относительно недолго, и в основном все равно использовал хоткеи студийные. Но в целом согласен, вкусовщина.

0
Автор поста оценил этот комментарий

Что именно зависит от языка и чем лучше подходит?

раскрыть ветку (3)
0
Автор поста оценил этот комментарий

Статический анализ околобесполезен для языков с динамической типизацией. Все остальные вещи спорны и зависят от наличия нужного функционала/плагинов и вкусовщины.

Автор поста оценил этот комментарий

Кажется, спор вызван тем, что комментаторы говорят о разных вещах. VSC - это текстовый редактор, причем весьма универсальный. Тут можно кодить, редактировать xml/json, готовить статью в mardown, читать логи, править конфигурации, и много другого. Под него есть много дополнений, которые расширяют функциональность в определенном направлении.

Если же речь идет о конкретной задаче - программирование, для таких вещей есть более тяжелые IDE, заточенные на конкретные языки или платформы. В частности, для программирования например веб-приложения ASP.NET Core Web API на C# есть полновесная студия, которая конечно мощнее чем VSC.

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

я пишу JS/TS на VSC и мне хватает, поэтому сказал за себя

Автор поста оценил этот комментарий

Ну пиздец же

Иллюстрация к комментарию
Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества