Макрос 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
(использовать регулярные выражения)