Поиск и замена по коду в Visual Studio

57

Для того чтобы разработка была продуктивной, необходимо перемещаться по базе программ и быстро находить требуемый код. Система Visual Studio 2013 предоставляет не одну, а множество функций поиска, предназначенных для выполнения конкретных задач. Сначала мы обсудим каждую из этих функций, а также опишем ситуации, в которых они могут понадобиться.

Окно Quick Find/Replace

Простейшим инструментом поиска в системе Visual Studio 2013 является диалоговое окно Quick Find. Функциональные возможности поиска и замены в системе Visual Studio 2013 разделены между двумя командами, имеющими общие диалоговые окна и свойства, Quick Find и Quick Replace, которые выполняют поиск информации, которую необходимо быстро найти в открытом документе или текущем проекте. Эти два инструмента имеют ограниченные возможности для фильтрации и расширенного поиска, как будет показано далее, даже существующие свойства обеспечивают работу мощной поисковой системы, намного превосходящую практические потребности большинства пользователей.

Этот инструмент поиска лучше всего настроен на поиск и замену текста (в отличие от поиска и замены символа).

Команда Quick Find

Термин Quick Find в системе Visual Studio 2013 используется как название инструмента, имеющего самые главные функциональные возможности для поиска. По умолчанию он находит отдельное слово или фразу в текущем документе, но даже команда Quick Find имеет дополнительные возможности для расширенного поиска за пределами активного модуля и даже для использования шаблонных символов и регулярных выражений в запросе.

Для того чтобы выполнить команду Find, нажмите стандартную комбинацию клавиш <Ctrl+F> или выберите команду Edit --> Find and Replace --> Quick Find. В ответ система Visual Studio откроет основное окно Find and Replace, в котором фокус по умолчанию находится на команде Quick Find:

Окно поиска Quick Find

Показанная на рисунке панель незначительно отличается от версии Visual Studio 2012, однако, в более ранних версиях Visual Studio окно поиска было модальным, теперь же панель поиска является ненавязчивой. Вы можете ввести критерии поиска в текстовом поле или выбрать значение из предыдущих поисков, щелкнув по стрелке справа от текстового поля. По умолчанию область поиска ограничена текущим документом или окном редактирования.

При вводе каждого символа в текстовое поле поиска, редактор кода переходит к следующему совпадению введенного текста. Вы можете изменить область поиска. Для этого сначала щелкните по кнопке в виде угловой стрелки слева от поля поиска. Эта кнопка позволяет переключаться между режимами поиска и поиска с заменой. В нижней части диалогового окна вы увидите поле с выпадающим списком, позволяющим менять контекст поиска - Selection (поиск в выделенном тексте), Current Block (поиск в текущем блоке кода, где находится фокус ввода), Current Document (поиск по текущему открытому документу), Current Project (поиск по проекту), Entire Solution (поиск по всем проектам в решении) и All Open Documents (поиск во всех открытых документах):

Изменение контекста поиска Quick Find

Выбрав команду Quick Find в первый раз, можете больше не открывать диалоговое окно, а просто нажимайте клавишу <F3>, если требуется выполнить тот же самый поисковый запрос.

Команда Quick Replace

Выполнение команды Quick Replace похоже на выполнение команды Quick Find. Между этими командами можно переключаться, щелкая на кнопке слева от текстового поля поиска. Если хотите перейти непосредственно к окну Quick Replace, нажмите комбинацию клавиш <Ctrl+H> или выберите команды Edit --> Find and Replace --> Quick Replace. Функциональные возможности окна Quick Replace аналогичны функциональным возможностям окна Quick Find, но во втором окне есть дополнительное поле, в котором можно указать текст, используемый для замены.

Поле Replace With аналогично полю Find What - в нем можно либо набрать новую строку для замены, либо выбрать одну из ранее набранных строк в раскрывающемся списке.

Для того чтобы удалить повторяющиеся значения, просто выполните замену, ничего не указывая в поле ввода Replace With. Эта возможность позволяет находить все вхождения заменяемых значений и решать, следует ли их удалить.

Группа Find Options

Иногда необходимо отфильтровать результаты поиска, используя разные критерии. Именно в этой ситуации можно воспользоваться возможностями поиска. Во-первых, для того чтобы вывести на экран группу вариантов поиска (доступную во всех командах поиска и замены), следует щелкнуть на пиктограмме Find Options. В открывшемся диалоговом окне, содержащем набор флажков (для версии 2010) и раскрывающийся список, можно выбирать варианты поиска, как показано на рисунке ниже:

Опции поиска

В версии Visual Studio 2010 эти опции также содержали варианты вида поиска: чувствительный к регистру (Match Case) или полное совпадение (Match Whole Word). Можно было также изменять направление поиска (Search Up) и указать, что вы собираетесь выполнять сложный поиск, используя шаблонные символы или регулярные выражения. В версии Visual Studio 2012 эти опции вынесли в отдельные кнопки, которые располагаются снизу в окне поиска.

Регулярные выражения при поиске

Регулярные выражения выводят поиск на совершенно новый уровень, позволяя выполнять сложные сравнения текстовых фрагментов с помощью инструмента RegEx, встроенного в систему Visual Studio 2013. Несмотря на то что в этой статье мы не планируем очень подробно описывать регулярные выражения (можете прочитать о них в статье регулярные выражения C#), они заслуживают упоминания как важная функциональная возможность диалогового Find and Replace, которую можно эффективно использовать.

Чтобы включить режим поиска с использованием регулярных выражений, необходимо нажать кнопку в виде звездочки внизу окна Quick Find. На рисунке ниже показан пример поиска переменных, содержащих в названии слово "value" и последующее за ним число:

Использование регулярных выражений при поиске в окне Find and Replace

Настройки Find and Replace

Настроить функциональные возможности поиска и замены можно с помощью их собственных флажков, содержащихся в диалоговом окне Tools --> Options. Флажки Find and Replace в группе Environment позволяют включать и отключать информационные сообщения и предупреждения, а также указывать, следует ли автоматически заполнять поле ввода Find what выделенным фрагментом текста из окна редактирования. Кроме того, в этой группе есть также флажок, позволяющий скрывать диалоговое окно Find после выполнения команды Quick Find или Quick Replace, что может оказаться удобным, если вы обычно ищете только первое совпадение.

Пройди тесты
Лучший чат для C# программистов