结构搜索和替换
最后修改时间:2023 年 11 月 20 日传统的搜索过程不考虑源代码的语法和语义。即使您使用正则表达式,PyCharm 仍将您的代码视为常规文本。结构搜索和替换( SSR ) 操作允许您根据代码结构搜索代码中的特定代码模式或语法结构。
PyCharm 根据您创建的搜索模板和应用的条件查找并替换源代码片段。
笔记
PyCharm 目前不支持 Python 的结构搜索和替换。
从结构上寻找目标
转到编辑 | 查找| 结构搜索以打开“结构搜索”对话框。
笔记
在“结构搜索”对话框中,您可以快速切换到“结构替换”对话框。点击。
在“结构搜索”对话框中,执行以下操作之一:
从头开始创建您自己的模板。
从模板列表中选择草稿模板。
在编辑器区域中,输入代码模板(
$variable$
代表您的代码),在对话框的工具栏中单击以保存它以供将来使用。您也可以选择将模板保存为检查。PyCharm 将创建的模板添加到现有模板列表(最近的节点)。
使用现有模板之一作为原型。
在可用的现有模板列表中,选择所需的模板。
考虑将以下样式定义添加到 HTML 文件中:
<style> #element1 { display: inline-block; width: 25%; margin-top:90px; } #element2 { display: inline-block; width: 40%; margin-top:10px; } </style>
让我们查找 HTML 文件 <div> 标记中包含的样式元素的所有引用。
在现有模板列表中,选择XML /HTML下的html 属性值。
单击“查找”。
PyCharm 会立即突出显示编辑器中找到的代码出现位置。
“结构搜索”对话框显示选定的模板以及模板中使用的过滤器的值。您可以编辑现有的过滤器或添加新的条件,例如添加一些正则表达式或脚本约束。将插入符号放在代码变量处并使用过滤器区域来管理过滤器。
在过滤区域中,单击添加新条件。例如,如果您需要添加正则表达式,请选择Text。您还可以根据变量添加其他条件。
在此示例中,设置以下条件:
对于$tag$ –
text=div
对于$attribute$ –
text=id
对于$value$ –
text=element[1-9]
指定搜索位置:在项目、模块、目录中或自定义范围内。
单击“查找”。
PyCharm 在“查找”工具窗口中显示结果。
从结构上替换目标
转到编辑 | 查找| 结构上替换。
如果您需要在替换模板中为变量添加过滤器,请在感兴趣的变量处放置插入符号,并使用过滤器区域来管理过滤器。
在过滤器区域中,根据您选择的过滤器,指定条件。
要缩小替换结果范围,请选择以下选项:
缩短完全限定名称- 用短名称和导入替换完全限定类名称。
重新格式化- 自动格式化替换的代码。
使用静态导入- 尽可能使用静态导入进行替换。
指定必要的选项后,单击“查找”。PyCharm 在“查找”工具窗口中显示结果。
在“查找”工具窗口中,您可以进一步处理结果,逐一替换找到的项目,或一次替换所有项目,或者预览潜在的更改。
请考虑以下示例,该示例将标签class
中属性的大写值转换p
为小写。在搜索模板字段中,我们创建一个模板,用于搜索属性中p
具有大写值([A-Z].*
和匹配大小写)的所有标签class
。我们将搜索范围缩小到这些class
值(搜索目标= b)。在替换模板字段中,我们创建一个新变量$d$
并为其分配一个 Groovy 脚本 ( b.getText().toLowerCase()
)。搜索完成后,我们选择全部替换来执行替换。
共享搜索模板
您可以通过导出或导入搜索模板与同事共享。
在“结构搜索”对话框(“编辑”|“查找”|“结构搜索”)中,创建一个新的搜索模板或使用现有的模板。
要导出模板,请单击。PyCharm 将模板的 XML 表示形式添加到剪贴板(按可查看剪贴板的内容)。您可以通过聊天、电子邮件或论坛与其他开发人员共享此表示。CtrlShift0V
要导入模板,请从任何地方(电子邮件、聊天或论坛)复制 ( ) 共享 XML 代码,然后在“结构搜索”对话框中单击。PyCharm 采用 XML 代码表示并将其转换为包含变量和范围(如果存在)的模板。Ctrl0C
感谢您的反馈意见!