Макрос Visual Studio для поиска строки и удаления совпадающих строк

В моем решении Visual Studio (2010 С#) мне нужно удалить все строки кода, содержащие соответствующий шаблон строки.

Например, я хочу удалить все строки, содержащие ".BackColor = System.Drawing.Color.Yellow;". Функция "Найти и заменить" в Visual Studio недостаточно хороша, потому что вы не можете сказать ей уничтожить соответствующие строки.

Итак, для этого мне нужен макрос. Любая помощь приветствуется.

Ответы

Ответ 1

Я стараюсь создавать макросы в VS, запустив макрорекордер, а затем отредактировав полученный код.

Итак, вручную найдите шаблон и нажмите F3. Затем остановите макрос (или нажмите клавишу запуска линии, выберите конец строки, нажмите "Удалить" и затем остановите макрос).

Отредактируйте макрос, команда для удаления строки:

DTE.ActiveDocument.Selection.SelectLine()
DTE.ActiveDocument.Selection.Delete()

Вы можете установить текст поиска с помощью FindText:

DTE.ActiveDocument.Selection.FindText(".BackColor = System.Drawing.Color.Yellow;", vsFindOptions.vsFindOptionsFromStart)

Ответ 2

Вы можете использовать функцию "Найти и заменить" Visual Studio для удаления соответствующих строк.

Ключ должен соответствовать всей строке, включая символ конца строки. Вы можете сделать это в подстановочных или регулярных выражениях. В подстановочном режиме начните выражение с * и завершите выражение с помощью *\n. Звездочки будут соответствовать любому количеству символов, а \n будет соответствовать символу конца строки.

В вашем случае ваш запрос на поиск будет "*.BackColor = System.Drawing.Color.Yellow;*\n". Затем поле замены должно быть пустым.


Чтобы включить режим подстановочных знаков, выберите "Подстановочные знаки" в поле "Использовать:" раздела "Найти параметры" диалогового окна "Найти и заменить".

Example showing how to turn on wildcard mode

Ответ 3

С Visual Studio 2015 это сработало для меня. Откройте окно поиска, установите флажок "Использовать регулярные выражения". Заполните "найти что" с помощью

.*myCodeHere.*\r?\n

заполните "replace" пустой строкой.

Ответ 4

Для Visual Studio 2015 (в которых нет макросов и никаких подстановочных знаков), я сделал следующее:

  • Откройте Найти и заменить (Ctrl + H)
  • Установить регулярные выражения (Alt + E)
  • Установите для окна поиска значение

({строка кодовой строки})\r?\n ({next line tabbing})

  • Оставьте поле "Заменить" пустым.
  • Заменить

Где -

{строка строки кода}= строка кода, которую вы хотите удалить. Обратите внимание, что вам нужно избегать символов, таких как скобки и кавычки, с помощью обратной косой черты()

{next line tabbing}= количество пробелов, предшествующих следующей строке кода (без этого ваша строка будет удалена, а следующая строка будет иметь двойные пробелы перед ней

Например, чтобы удалить

DoSomething ( "Привет" );

От -

class A
{
    void SomeMethod()
    {
        DoSomething("hello");
        DoSomethingElse();
    }
}

Замените следующие

(DoSomething (\ "hello \" ) \;)\r?\n ({})

Ответ 5

Я пытался удалить атрибут ([OperationContract] в моем случае), и ни один из других ответов не помог мне. Я наконец получил это, используя следующее:

\[OperationContract\]\r\n\t\t (использовать регулярные выражения)