GoLand 2025.3 Help

结构化搜索和替换

传统的搜索过程不会考虑源代码的语法和语义。 即使您使用正则表达式,GoLand 仍然将您的代码视为常规文本。 结构化搜索和替换SSR )操作允许您根据代码结构在代码中搜索特定的代码模式或语法结构。

GoLand 根据您创建的 search templates和您应用的 conditions查找和替换源代码片段。

结构性地搜索目标

  1. 在主菜单中,转到 编辑 | 查找 | 结构化搜索 以打开 结构搜索 对话框。

    要快速切换到 结构替换 对话框,请点击 “切换到替换”图标

  2. 结构搜索 对话框中,执行以下操作之一:

    • 从头创建模板:在模板列表中选择 草稿模板 ,并在编辑器区域中输入代码模板(例如,使用 $variable$ 表示您的代码)。

      要保存自定义模板以供以后使用,请在对话框工具栏上点击 保存模板 图标(保存模板按钮)。 您也可以选择将该模板保存为检查。

      结构搜索对话框

      GoLand 会将创建的模板添加到模板列表中的 最近 节点。

    • 使用现有模板作为原型:从可用的现有模板列表中选择所需的模板。

      例如,请参考以下代码段:

      package company import ( "fmt" "regexp" ) type Employee struct { NAME string Age int Salary float64 Email string } type Manager struct { Employee Department string } type Documents struct { Passport int SocSecurity string IDCard string BirthCert string } type Department struct { Name string Manager *Manager Employees []Employee } func (e *Employee) Work() { fmt.Printf("%s is working.\n", e.NAME) } func (e *Employee) GetDetails() string { return fmt.Sprintf("Employee: %s, Age: %d, Salary: %.2f, Email: %s", e.NAME, e.Age, e.Salary, e.Email) } func (e *Employee) IsValidEmail() bool { var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`) return emailRegex.MatchString(e.Email) }

      让我们查找一个包含四个字段的 struct,其中第一个字段以大写字母开头。

      在现有模板列表中,导航到 Go|声明 并选择 结构体声明。 如果打开的文件中存在匹配的构造,GoLand 将立即在编辑器中高亮显示它们。

      点击 查找 ,在整个项目中搜索这些结构。

      现有模板对话框
  3. 结构搜索 对话框中会显示所选模板及其过滤器的值。 您可以编辑现有过滤器,或添加新的 条件 ,例如正则表达式或 脚本约束。 将插入符号置于某个代码变量上,并使用过滤器区域管理其过滤器。

    例如,您可以更改 计数 修饰符的 $field$ 变量,并将其 最大值 值设置为 3。 现在,高亮显示的结果受到该设置的限制,且应包含不超过三个字段。

    编辑过滤器弹出窗口

    或者,为了实现更精细的搜索,您可以将搜索模板更改为:

    type $name$ struct { $field$ $fieldType$ $field1$ $field1Type$ $field2$ $field2Type$ $field3$ $field3Type$ }
  4. 在此示例中,为 文本 变量添加一个 $field$ 修饰符。

    修饰符 面板中,点击 添加"添加"按钮 )以创建新的修饰符。 要使用正则表达式,请选择 文本。 您还可以根据变量添加 其他修饰符

  5. 对于 文本 修饰符,输入以下正则表达式:

    \b[A-Za-z]*[A-Z]{2,}[A-Za-z]*\b

    在此情况下,GoLand 仅搜索首个字段中包含大写字符的 struct。

    在过滤器对话框中添加正则表达式

    还提供其他选项,具体取决于所选语言。

    例如,请查看以下选项:

    • 语言 :使用该列表选择要在搜索中包含的文件类型。 在此情况下,它为 Go

    • 目标 :使用该列表选择要搜索的项。

    • 注入的代码 :选中后,诸如 HTML 中的 JavaScript 或 Java 中的 SQL 等注入的代码将包含在搜索中。

    • 区分大小写 :选中后,搜索结果将与搜索目标的大小写匹配。

  6. 指定搜索范围:项目、模块、目录或自定义范围。

  7. 单击 查找

    GoLand 会在 查找 工具窗口中显示结果。

    在“查找工具”窗口中显示的结果

    您可以将新的搜索模板作为自定义模板添加到 结构化搜索检查。 为此,请在 查找 工具窗口中点击 从模板创建检查。 随后即可重复使用它来检查您的代码。

共享搜索模板

您可以通过导出或导入搜索模板与同事共享。

  1. 结构搜索 对话框 编辑 | 查找 | 结构化搜索 中, 创建一个新的搜索模板或使用现有的模板

  2. 要导出模板,请点击 “导出模板到剪贴板”图标。 GoLand 将模板的 XML 表示添加到剪贴板(按 Ctrl+Shift+V 以查看剪贴板内容)。 您可以在聊天、电子邮件或论坛中与其他开发者共享此表示形式。

    要导入模板,请从任何地方(电子邮件、聊天或论坛)复制(Ctrl+C )共享的 XML 代码,并在 结构搜索 对话框中点击 从剪贴板导入模板图标。 GoLand 接受 XML 代码表示并将其转换为模板,包括变量和作用域(如果存在)。

最后修改日期: 2025年 12月 5日