Многострочный поиск и замена в Visual Studio

Можно ли это сделать? Мы используем VS2005 и VS2008 и VS2010.

Я не имею в виду регулярные выражения, которые имеют свое место, но обычный старый текст находит и заменяет. Я знаю, что мы можем сделать это (в крайнем случае) с регулярными выражениями с помощью тега \n, но предпочитаем не запутываться в escape-символах регулярных выражений, а также там проблема читаемости.

Если невозможно сделать то, что простая и простая (свободная) альтернатива - это люди, которые используют? Это не связано с детонацией нашего собственного макроса.

Ответ 1

Наконец я нашел его.

Не нужно загружать и загружать любой внешний макрос.

Работает в Visual Studio 2008 с встроенным макросом как минимум.:)

Шаги:
1) Выберите текст, который вы хотите найти. 2) Нажмите "Alt + F8" или откройте "Инструменты → Макросы → Макро Explorer"
3) Дважды щелкните "Образец → Утилиты → FindLine". (Он откроет окно "Поиск" с вашим выбором, загруженным в поле "Найти". Не беспокойтесь о усеченном тексте, показанном в поле "Найти". Поверьте мне, в поле есть все... способ показать это может быть...: ))
4) Нажмите кнопку "Быстрая замена" в диалоговом окне "Найти и заменить". Введите текст с заменой. 5) И нажмите любую из 3 кнопок в соответствии с вашим требованием... и сделайте это.:)

Урри.. его работа.. Не может быть прямой способ сделать это, но вы знаете с MS.. ничего не просто и легко..:)

Ответ 3

Это работает сегодня в Visual Studio 2012:

fooPatternToStart.*(.*\n)+?.*barPatternToEnd

Посмотрите, как часть (.*\n)+? выполняет совпадение по нескольким строкам, не жадным.
fooPatternToStart - это некоторый шаблон регулярного выражения в вашей стартовой строке, а barPatternToEnd - ваш шаблон, чтобы найти на другой строке ниже, возможно, много строк ниже...

Пример найден здесь.

Простой и эффективный:)

Примечание: до VS2012, шаблон, который работал: fooPatternToStart.(.\n)[email protected]*barPatternToEnd

Ответ 4

Вы можете искать многострочные выражения, щелкнув флажок "Использовать регулярные выражения" в диалоговом окне "Найти и заменить". Затем разрывы строк обозначаются символом \n.

enter image description here

Ответ 6

Вы также можете открыть файлы с помощью UltraEdit, который полностью поддерживает замену MultiLine. Вы можете использовать пробную версию, если только собираетесь использовать ее один раз.

Ответ 7

Относительно комментария Эндрю Коркера 19 августа 2011 года в 9:52 выше:

Если вам также нужно указать строку с несколькими строками, отредактируйте макрокоманду и установите заменяющий текст, как показано ниже. Это позволит вам "точно настроить" вашу замену только с небольшими изменениями.

 Sub FindLine()
    Dim textSelection As TextSelection

    textSelection = DTE.ActiveDocument.Selection
    textSelection.CharLeft(True)
    DTE.ExecuteCommand("Edit.Find")
    DTE.Find.FindWhat = textSelection.Text

    'also preset replacement text with current selection
    DTE.Find.ReplaceWith = textSelection.Text
End Sub

Ответ 9

Последняя версия (начиная с этой публикации) Notepad ++ делает многострочный поиск/замену. Я не знаю, было ли это верным, когда это было задано. Но без поддержки макросов в Visual Studio это актуально сейчас.