领先一步
VMware 提供培训和认证,助您加速进步。
了解更多您是 Eclipse 用户吗?您是否想要一种快速简便的方法来搜索工作空间中的文本片段和模式?那么请继续阅读!
Spring ToolSuite (STS) 3.3.0 和 Groovy Gails Tool Suite (GGTS) 3.3.0 刚刚发布,其中包含了一个新的“快速搜索”。即使您不是 Spring 或 Grails 开发人员,您也可能对这个功能感兴趣,因为它可以单独安装到纯 Eclipse 中。
您可以通过按 CTRL+SHIFT+L(Mac 上为 CMD+SHIFT+L)打开对话框
当然,如果你愿意,也可以使用鼠标,但你的手没有必要离开键盘。
如果你在 Eclipse 编辑器或视图中选择了一段文本,当你打开快速搜索时,该字符串将自动输入到搜索框中。开始输入以替换它。例如,你可以在控制台中选择一个日志或错误消息字符串,以便快速搜索它。
如果没有选择任何内容,则你上次的搜索将输入到搜索框中。这有助于当你反复搜索相同模式时。
那么这是怎么可能的呢?嗯,老实说,我们获得了一个很大的提升,因为现代硬件确实非常快。一个快速的 CPU、大量的 RAM 和操作系统中良好的文件系统缓存,当你使用高度优化的原生 Java 正则表达式时,都能发挥很大作用。
故事中另一个更有趣的部分是,你“体验”到的速度实际上有点像幻觉。最坏的情况是,你可能会将一个独特的搜索词粘贴到对话框中,然后不得不等待几秒钟,因为它会搜索工作区中的所有文件。实际上,你不会经常遇到这种最坏的情况。所以让我们看看魔术幕后使用的两个“技巧”。(注意:我并不声称发明了这些技术。我确信它们以前曾被用于提供响应式搜索体验。本文是关于我如何使用这些技术为自己和其他 Eclipse 用户创建一个出色的文本搜索工具。)
技巧 1:异步性
当你输入第一个字符后,搜索过程就会启动,并开始搜索与你的查询匹配的内容。结果一找到就会显示出来。通常,单字符搜索会在几乎所有文件中找到许多匹配项。所以,对话框会立即 запол起来。为了避免对话框爆炸,搜索器在达到大约 200 个结果的限制时会暂停。
当你输入另一个字符时,搜索词会更新。但不是从头开始重新搜索,而是在正在运行的搜索过程中更新搜索词。这意味着任何后续结果都将匹配新的搜索词。但是已经找到的结果呢?嗯,它们远非无用,我们知道它们已经包含了新查询的结果!例如,如果我们输入“av”,那么任何包含“av”的东西显然也必须包含“a”。所以我们所要做的就是从旧查询“a”的结果中过滤掉不匹配新查询“av”的结果。这比从头开始重新搜索要快得多,因为我们只需要过滤相对少量内存中的项目,而不是再次扫描文件系统。因此,随打随更的更新是即时发生的。
技巧 2:优先级
第二个技巧是“优先级”。如果任其运行,快速搜索引擎最终会遍历工作区中的所有文件。但它会尝试智能地首先遍历你可能更感兴趣的文件。我们这样做的方式并不特别复杂。我们只是根据当前在编辑器中打开的文件来确定优先级。“当前活动编辑器”被赋予最高优先级。然后是其他编辑器中打开的文件。然后是与这些文件位于相同文件夹中的文件,依此类推。
这有两个好处。首先,它使搜索更快地返回有趣的结果。其次,它使更有趣的结果出现在列表的顶部。
要单独安装,你可以从 Eclipse Marketplace 获取(搜索“Quick Search”)。或者你可以直接从更新站点安装。通过菜单“Help >> Install New Software”打开 Eclipse 安装程序,并将更新站点 URL 粘贴到对话框中(本文末尾)。然后只选择“Eclipse Quicksearch”功能并点击“Install”按钮。