在我的Visual Studio(2010 C#)解决方案中,我需要删除包含匹配字符串模式的所有代码行。
例如,我想删除包含“.BackColor = System.Drawing.Color.Yellow;”的所有行。 Visual Studio的“查找和替换”功能不够好,因为您无法告诉它消除匹配的行。
所以我想我需要一个宏。任何帮助表示赞赏。
答案 0 :(得分:41)
您可以使用Visual Studio的“查找和替换”功能删除匹配的行。
关键是匹配整行,包括行尾字符。您可以在通配符或正则表达式模式下执行此操作。在通配符模式下,使用*
开始表达式,并使用*\n
结束表达式。星号将匹配任意数量的字符,\n
将匹配行尾字符。
在您的情况下,您的查询查询将为“*.BackColor = System.Drawing.Color.Yellow;*\n
”。然后应将替换字段留空。
要启用通配符模式,请在“查找和替换”对话框的“查找选项”部分的“使用:”字段中选择“通配符”。
答案 1 :(得分:13)
使用Visual Studio 2015,这对我有用。打开“搜索”窗口,选中“使用正则表达式”复选标记。用
填写“找到什么”.*myCodeHere.*\r?\n
用空字符串填充“替换”。
答案 2 :(得分:6)
我倾向于通过运行宏录制器然后编辑生成的代码在VS中创建宏。
因此,手动搜索模式,然后按F3。然后停止宏(或按行开始键,选择行结束,按删除然后停止宏)。
编辑宏,删除行的命令是:
DTE.ActiveDocument.Selection.SelectLine()
DTE.ActiveDocument.Selection.Delete()
您可以使用FindText设置查找文本:
DTE.ActiveDocument.Selection.FindText(".BackColor = System.Drawing.Color.Yellow;", vsFindOptions.vsFindOptionsFromStart)
答案 3 :(得分:2)
对于Visual Studio 2015(其中没有宏且没有通配符),我执行了以下操作:
({代码串}})\ r?\ n({next line tabbing})
其中 -
{代码字符串} =您要删除的代码行。请注意,您需要使用反斜杠()
转义括号和引号等字符{next line tabbing} =下一行代码前面的空格数(如果没有这个,你的行将被删除,但下一行会有一倍的空格
例如,要删除
DoSomething的("你好&#34);
从 -
class A
{
void SomeMethod()
{
DoSomething("hello");
DoSomethingElse();
}
}
替换以下
(DoSomething(\" hello \")\;)\ r?\ n({})
答案 4 :(得分:1)
我正在尝试删除属性(在我的情况下为[OperationContract]),其他答案对我都无效。我终于通过使用以下命令使其工作:
\[OperationContract\]\r\n\t\t
(使用正则表达式)
答案 5 :(得分:1)
我不想猜测正确的缩进匹配(可能是制表符,空格可能更多或更少),我更喜欢使用O_ASYNC
模式匹配行的开头。
例如,要删除所有具有fcntl(fd, F_SETFL, O_ASYNC);
属性的行,我使用
^\s*
(使用VS 2019在Windows上也可以使用)。