Visual studio Visual Studio宏查找字符串并删除匹配行

Visual studio Visual Studio宏查找字符串并删除匹配行,visual-studio,macros,replace,Visual Studio,Macros,Replace,在我的VisualStudio2010C解决方案中,我需要删除包含匹配字符串模式的所有代码行 例如,我想删除包含.BackColor=System.Drawing.Color.Yellow;的所有行;。VisualStudio的查找和替换功能不够好,因为您无法告诉它删除匹配行 所以我想我需要一个宏。非常感谢您的帮助。我倾向于在VS中创建宏,方法是运行宏记录器,然后编辑生成的代码 因此,手动搜索模式,然后按F3。然后停止宏或按行开始键,选择结束行,按删除,然后停止宏 编辑宏时,删除行的命令为: D

在我的VisualStudio2010C解决方案中,我需要删除包含匹配字符串模式的所有代码行

例如,我想删除包含.BackColor=System.Drawing.Color.Yellow;的所有行;。VisualStudio的查找和替换功能不够好,因为您无法告诉它删除匹配行


所以我想我需要一个宏。非常感谢您的帮助。

我倾向于在VS中创建宏,方法是运行宏记录器,然后编辑生成的代码

因此,手动搜索模式,然后按F3。然后停止宏或按行开始键,选择结束行,按删除,然后停止宏

编辑宏时,删除行的命令为:

DTE.ActiveDocument.Selection.SelectLine()
DTE.ActiveDocument.Selection.Delete()
您可以使用FindText设置查找文本:

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

您可以使用Visual Studio的“查找并替换”功能删除匹配行

关键是匹配整行,包括行尾字符。可以在通配符或正则表达式模式下执行此操作。在通配符模式下,表达式以*开头,表达式以*\n结尾。星号将匹配任意数量的字符,而\n将匹配行尾字符

在您的情况下,find查询将是*.BackColor=System.Drawing.Color.Yellow*\N然后,“替换”字段应保留为空

要启用通配符模式,请在“查找和替换”对话框的“查找选项”部分的“使用:”字段中选择“通配符”


对于没有宏和通配符的Visual Studio 2015,我执行了以下操作:

打开查找并替换Ctrl+H 设置为使用正则表达式Alt+E 将“查找”框设置为 {代码字符串行}\r?\n{下一行制表符}

将替换框留空 代替 在哪里-

{line of code string}=要删除的代码行。注意:您需要用反斜杠转义括号和引号等字符

{next line tabbing}=下一行代码前面的空格数如果没有此选项,您的行将被删除,但下一行前面的空格数将增加一倍

例如,删除

多索梅钦盖罗

从-

class A
{
    void SomeMethod()
    {
        DoSomething("hello");
        DoSomethingElse();
    }
}
替换以下内容:

DoSomething\hello\\\r?\n{}


在VisualStudio2015中,这对我很有用。打开“搜索”窗口,选中“使用正则表达式”复选标记。用什么填充

.*myCodeHere.*\r?\n

填充替换为空字符串。

我试图删除案例中的属性[OperationContract],但其他答案都不适用于我。我最终通过以下方法实现了这一目标:


\[OperationContract\]\r\n\t\t使用正则表达式

基于@HolgerJeromin的答案:与其猜测正确的缩进匹配可能是制表符,也可以是空格,也可以或多或少,我更喜欢使用^\s*模式匹配行的开头

例如,要删除所有具有ProducesResponseType属性的行,我使用

^\s*\[ProducesResponseType.*\n

使用VS 2019也可以在Windows上工作。

它需要是VS解决方案吗?像text pad这样的产品可以很容易地查看文件夹中的所有CS文件,并进行必要的替换。不需要是VS宏,但这是首选。你能告诉我如何在TextPad中完成吗?我可以像在VS中一样在文件中查找,但我仍然找不到自动删除结果行的方法。这一方法实际上在Visual Studio的最新版本中有效,因为宏已被删除。我使用的是VS15,没有使用:复选框。要使其正常工作,我需要选中“使用正则表达式”复选框,我的通配符必须是。*而不是*和[\n]而不是\n。这是一个极好的答案!为什么要将其设置为wiki?不幸的是,在VS 2017中找不到“选项”下的“使用”下拉列表:,我使用的是VS 2017professional@AnasGhanem请参见此处的eeScott评论。VS15和VS17都应该具有相同的选项VS2013没有通配符或宏,并且永远找不到[MyAttribute]。我尝试了:[MyAttribute]\r?\n{},[MyAttribute]\r?\n{},[MyAttribute]\r\n{},[MyAttribute]\n{},[MyAttribute]\r?\n{}。有什么想法吗?好的,我找到了:FindWhat=[MyAttribute]\r\n不带引号。ReplaceWith=\r\n不带引号。UseRegluarExpressions=true。这不会删除该行。这将给您留下一条空行。大不一样。是的,这对我来说也是一个阻碍。但是它没有留下一个空行……您不需要回车字符。即使在Windows上,它也可以按如下方式正常工作,并删除行:.*myCodeHere.*\n这对我不起作用,在尝试删除时发现0个结果。*[OperationContract]..\n,可能是大括号弄坏了它?如果我选中“使用正则表达式”复选框,那么它实际上会删除我的解决方案中每个文件的全部内容,这不好……你能告诉我们在哪里启用这个宏记录器吗?@TheMuffinMan在VS2010中,它关闭了“工具”菜单。他们是 2012年从VS中删除,但作为提醒返回。如果存在o[必须使用\,例如\,对其进行转义,否则,正则表达式可能构造错误,或者只是找不到字符串。