Как найти и заменить все вхождения (во всех файлах) в коде Visual Studio?

245

Я не могу понять, как найти и заменить все вхождения слова в разных файлах, используя Visual Studio Code версии 1.0.

У меня сложилось впечатление, что это должно быть возможно, так как выполнение Ctrl + Shift + F позволяет мне просто искать папку, но я не знаю, как действовать дальше.

Я смотрел в различных сочетаниях клавиш https://code.visualstudio.com/Docs/customization/keybindings

Но я нашел только как заменить все вхождения в открытом файле (Ctrl + h)

Вся помощь с благодарностью оценена, это сводит меня с ума.

Cisum Inas
источник

Ответы:

363

Я использую Visual Studio Code 1.8, и эта функция доступна. Но сначала это немного сложно понять, и (на момент написания) документы не объясняют, как правильно его использовать, поэтому вот как это работает, шаг за шагом:

Вызывать замену в файлах (в меню «Правка» или с помощью сочетания клавиш Ctrl+ Shift+ H)

Вы увидите стандартный ввод Find / Replace, заменяющий панель файлов слева:

введите описание изображения здесь

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

введите описание изображения здесь

Теперь вам нужно внести изменения (и даже после этого вы должны сохранить измененные файлы .)

Вы можете внести эти изменения различными способами:

1) Внести все изменения сразу во все файлы.

Щелкните значок замены рядом со строкой замены (примечание: у вас появится диалоговое окно для подтверждения этого массового действия.)

введите описание изображения здесь

2) Сделать все изменения в одном файле одновременно.

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

введите описание изображения здесь

3) Сделайте одно изменение в одном файле.

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

введите описание изображения здесь

Наконец, не забудьте сохранить!

Все эти файлы теперь изменены в редакторе и еще не сохранены на диск.

Использовать Файл -> Сохранить все (или Ctrl+ Alt+ S)

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

введите описание изображения здесь

Джефф Уорд
источник
1
Можно ли сохранить «поиск-замена»? Я часто ищу 'class =' ​​и заменяю на 'className ='
Руна
1
Можно ли пропустить последний шаг и выполнить поиск и замену без вывода сообщений? Если я выполняю простой поиск и замену, я не хочу сохранять каждый отдельный файл.
Суббота,
1
Я не уверен, что ответ на любой из этих вопросов. Но @satJ, обратите внимание, что Ctrl+Alt+Sвсе измененные файлы сохраняются одновременно, так что это довольно быстро и просто.
Джефф Уорд
Черт возьми, это опасно, меняя все файлы по умолчанию. Есть ли команда просто найти / заменить в одном файле?
Александр Миллс
Текущее значение по умолчанию для сохранения - Ctrl-k, за которым следует буква s. Ctrl-k, а затем Ctrl + w закроют все ваши окна после того, как программы открыли их несколько.
Ребекка
26

Обновить

Начиная с версии 1.3 (июнь 2016 г.) можно выполнять поиск и замену в коде Visual Studio. Используя Ctrl + Shift + F, вы можете искать и заменять все вхождения.

Похоже, что в данный момент это невозможно (Версия 1.1.1 (апрель 2016 г.))

«В: Возможен ли глобальный поиск и замена?

A: Эта функция еще не реализована, но вы можете ожидать ее появления в будущем! "

https://code.visualstudio.com/Docs/editor/codebasics

Сообщество также просит об этом: https://github.com/Microsoft/vscode/issues/1690

Cisum Inas
источник
Для поиска материала в определенной папке просто добавьте путь к папке в поле files to include. Вы можете найти / заменить вещи даже за пределами рабочего пространства. Search поиск осуществляется не по именам файлов, а по файлам. (Кто-нибудь знает, как искать имя файла за пределами рабочей области?)
JinSnow
22

Чтобы заменить строку в одном файле (открытом в данный момент): CTRL + H

Для замены на уровне рабочего пространства используйте: CTRL + SHIFT + H

Sidd501
источник
Примечание: вы должны нажать Enter для запуска поиска при использовании Ctrl + Shift + H.
Аарон Франке
19

Это лучший способ.

  1. Сначала наведите курсор на элемент и нажмите F2.

  2. Затем введите новое имя и нажмите клавишу Enter. Это переименует все вхождения в каждом файле вашего проекта.

Это идеально подходит для случаев, когда вы хотите переименовать несколько файлов. Например, вы можете переименовать общедоступную функцию в службе Angular и обновлять ее везде, где она используется.

Для более хороших инструментов я настоятельно рекомендую: https://johnpapa.net/refactoring-with-visual-studio-code/

DonDaniel
источник
Что делать, если я хочу переименовать вхождения только в текущем файле?
Темирбек
@temirbek Я следую этому запросу некоторое время. Прошло более 2 лет, и он еще не был реализован. github.com/Microsoft/vscode/issues/14836
ДонДаниэль
Привет, он также переименовывает соответствующие папки и импортирует?
Тамаши Кайдзен
5

На странице « Привязки клавиш кода Visual Studio» в разделе « Ссылки на клавиши быстрого доступа» есть ссылки на PDF-файл для каждой основной ОС. После открытия найдите «заменить в файлах» или любой другой ярлык, который вам может понадобиться.

Другой способ - использовать палитру команд ( ctrl/cmd+ shift+ P), где вы можете ввести «заменить», чтобы вывести список всех связанных команд, включая ту, которую вы хотите:

Заменить в файлах ctrl/cmd+ shift+H

T04435
источник