结构搜索和替换
传统的搜索过程不考虑源代码的语法和语义。即使您使用正则表达式,WebStorm 仍然会将您的代码视为常规文本。结构搜索和替换( SSR ) 操作让您可以根据代码结构在代码中搜索特定的代码模式或语法结构。
WebStorm 根据您创建的搜索模板和应用的条件查找和替换源代码片段。
从结构上搜索目标
从主菜单中,选择结构搜索”对话框。
以打开“在“结构搜索”对话框中,执行以下操作之一:
从头开始创建您自己的模板。
在编辑器区域中,输入代码模板(
$variable$
代表您的代码),单击,然后选择保存模板以保存以供将来使用。WebStorm 将创建的模板添加到现有模板对话框中的现有模板列表(用户定义节点)中。
使用现有模板之一作为原型。
单击,选择现有模板以打开预定义模板列表,然后选择适当的模板。
考虑以下示例类:
类人 { 构造函数(名字,姓氏,年龄,眼睛颜色) { this.firstName = firstName; this.lastName = 姓氏;this.eyeColor = 眼睛颜色;this.age = 年龄;} move(distanceInMeters) { console.log(`人员移动 ${distanceInMeters}m.`); } sing(a) { console.log(`人唱 ${a}`); } jump (distanceInMeters,heightInMeters) { console.log(`人跳了 ${heightInMeters} 米高和 ${distanceInMeters} 米右。`); } RETIRED(age) { 返回年龄 >= 60; } }让我们在类中找到某个方法。
在现有模板列表中,单击Javascript,展开General节点,然后选择Functions模板。
单击“确定”返回“结构搜索”对话框以使用所选模板。
WebStorm 会立即在编辑器中突出显示找到的代码。
“结构搜索”对话框显示所选模板和模板中使用的过滤器的值。您可以编辑现有过滤器或添加新条件。将插入符号放在代码变量上,并使用过滤器区域来管理过滤器。
例如,要更改模板中的参数数量,请选择
$parameter$
变量并指定适当的最小数量。当您单击Find时,WebStorm 会打开Find工具窗口,其中包含带有两个或更多参数的方法列表,在我们的示例中,仅
jump (distanceInMeters,heightInMeters) {}
显示。在过滤器区域中,单击以添加新条件。例如,如果您需要添加正则表达式,请选择Text。您还可以根据您的变量添加其他条件。
在打开的字段中,输入您的条件。
例如,让我们键入以下正则表达式:
\b[AZ]+\b在这种情况下,WebStorm 将只搜索带有大写字符的字段。
另请注意,默认情况下,Recursive复选框处于选中状态。这意味着 WebStorm 执行递归搜索,所有嵌套项都将包含在结果中。例如,当您搜索方法调用时,启用Recursive选项时,WebStorm 将在
foo(foo(foo()))
. 禁用Recursive选项后,只会找到外部方法调用。指定以下选项以进一步缩小搜索范围:
文件类型- 使用列表选择哪些文件类型应该是搜索的一部分。在我们的例子中,它是JavaScript。
范围- 指定搜索位置:在项目、模块、目录或自定义范围内。
搜索目标- 您可以选择完全匹配来匹配确切的模板或其他可用的代码元素(在我们的例子中是
name
)。
单击查找。
WebStorm 在查找工具窗口中显示结果。
在结构上替换目标
从主菜单中,选择
。如果您需要为替换模板中的变量添加过滤器,请在感兴趣的变量处放置一个插入符号,并使用过滤器区域来管理过滤器。
在过滤器区域中,根据您选择的过滤器,指定条件。
要缩小替换结果的范围,请选择以下选项:
缩短完全限定名称- 用短名称和导入替换完全限定的类名称。
重新格式化- 自动格式化替换的代码。
使用静态导入- 尽可能使用静态导入替换。
指定必要的选项后,单击查找。WebStorm 在查找工具窗口中显示结果。
在“查找”工具窗口中,您可以进一步处理结果,一个一个替换找到的项目,或者一次替换所有项目,或者预览您的潜在更改。
共享搜索模板
您可以通过导出或导入搜索模板与您的同行共享。
在结构搜索对话框( )中,创建一个新的搜索模板或使用现有的。
要导出模板,请单击并选择将模板导出到剪贴板。WebStorm 将模板的 XML 表示添加到剪贴板(按下Ctrl+Shift+V可查看剪贴板的内容)。您可以在聊天、电子邮件或论坛中与其他开发人员共享此表示。
Ctrl+C要导入模板,请从任何地方(电子邮件、聊天或论坛)复制 ( ) 共享 XML 代码,然后在“结构搜索”对话框中,单击并选择从剪贴板导入模板。WebStorm 采用 XML 代码表示并将其转换为包含变量和范围(如果存在)的模板。