Eclipse 快速搜索

工程 | Kris De Volder | 2013 年 7 月 11 日 | ...

您是 Eclipse 用户吗?您是否想快速轻松地在工作空间中搜索文本片段和模式?那么请继续阅读!

Spring Tool Suite (STS) 3.3.0 和 Groovy Grails Tool Suite (GGTS) 3.3.0 刚刚发布,其中包含了一个新的“快速搜索”功能。即使您不是 Spring 或 Grails 开发者,您可能也会对这个功能感兴趣,因为它可以单独安装到标准的 Eclipse 中。

快速搜索对话框简介

快速搜索对话框只专注于做好一件事:使用简单的文本搜索快速浏览您的工作空间。

您可以通过按 CTRL+SHIFT+L(或在 Mac 上按 CMD+SHIFT+L)打开对话框

简单的力量

与标准的 Eclipse 搜索 UI 不同,快速搜索 UI 极其简单。无需配置(例如,无需定义搜索范围、创建工作集等)。只有一个搜索文本框。开始输入,您会看到结果立即出现,并且随您输入而即时更新。使用箭头键选择结果,按 Enter 键导航到该结果。您也可以立即按 Enter 键打开第一个结果。

当然,如果您愿意,也可以使用鼠标,但是您的双手无需离开键盘

如果您在 Eclipse 编辑器或视图中选中一段文本,当您打开快速搜索时,该字符串将自动输入到搜索框中。开始输入以替换它。例如,您可以在控制台中选中一个日志或错误消息字符串,以便快速搜索它。

如果没有选中任何内容,则您的上次搜索将输入到搜索框中。当您反复搜索相同的模式时,这很有帮助。

我们是如何做到如此之快的?

当您使用快速搜索对话框时,结果通常会几乎即时出现,并随您继续输入而即时更新。这一切都无需使用搜索索引完成,即使在较大的工作空间(例如,包含所有 STS 和 GGTS 的我们自己的工作空间相当大)上,它的扩展性也相当好。

那么,这是如何做到的呢?说实话,我们之所以能有很大提升,是因为现代硬件确实相当快。当您使用高度优化的原生 Java 正则表达式时,快速的 CPU、大容量的 RAM 和操作系统中良好的文件系统缓存能够发挥很大作用。

故事中另一个更有趣的部分是,您“体验”到的速度实际上有点像错觉。在最坏的情况下,您可能会将一个唯一的搜索词粘贴到对话框中,然后不得不等待几秒钟,因为它会搜索您工作空间中的所有文件。实际上,您很少会遇到这种最坏的情况。所以,让我们看看隐藏在神奇幕布后面的两个“技巧”。(注:我并非声称发明了这些技术。我确信它们以前曾被用于提供响应式搜索体验。本文是关于我如何使用这些技术为我自己和其他 Eclipse 用户创建了一个不错的文本搜索工具。)

技巧 1:异步性

一旦您输入第一个字符,搜索过程就会启动,并开始搜索与您的查询匹配的内容。结果一经找到就会立即显示。通常,单个字符的搜索在几乎任何文件中都会有很多匹配项。  因此,对话框会立即填充结果。为了避免对话框结果过多,当达到约 200 个结果的限制时,搜索器会暂停。

当您输入另一个字符时,搜索词会更新。但不是从头开始重新搜索,而是在正在运行的搜索进程内部更新搜索词。这意味着后续找到的任何结果都将与新的搜索词匹配。但是,已经找到的结果呢?它们不仅不是无用的,我们知道它们已经包含了新查询的结果!例如,如果我们输入“av”,那么任何包含“av”的内容显然也必须包含“a”。因此,我们只需对旧查询“a”的结果进行过滤,排除不匹配新查询“av”的结果即可。这比从头开始重新搜索要快得多,因为我们只需过滤相对较少数量的内存中的项目,而不是再次扫描文件系统。因此,您在输入时更新是即时发生的。

技巧 2:优先级划分

第二个技巧是“优先级划分”。如果任其运行,快速搜索引擎最终会遍历您工作空间中的所有文件。但它会尝试智能地优先遍历您可能更感兴趣的文件。我们实现这一点的方式并不是特别复杂。我们只是根据当前在编辑器中打开的文件来划分优先级。最高优先级分配给“当前活动编辑器”。然后是其他编辑器中打开的文件。接着是与这些文件位于同一文件夹中的文件,依此类推。

这有两个好处。首先,它使搜索更快地返回您感兴趣的结果。其次,它使更感兴趣的结果出现在列表顶部附近。

调整与选项

之前我说没有选项可以配置。我撒谎了 :-)。快速搜索实际上并不搜索您工作空间中的所有文件。它跳过了一些东西。这很好,因为它加快了搜索速度。而且,您可能也不想看到这些文件中的结果。例如,maven 的 'target' 目录、'.git' Git 元数据目录等中的文件。跳过的内容可以通过“首选项”页面进行配置。  希望我们设置的默认值是正确的,这样大多数用户就不需要更改它们。但如果您需要,可以进行更改。

安装

Eclipse Quicksearch 功能预装在 GGTS 和 STS(3.3.0 及更高版本)中。它是 'eclipse-integration-commons' 项目的一部分。但是,您也可以将其单独安装到标准的 Eclipse 中,因为此功能不依赖于其他 Spring 项目代码。

要单独安装,您可以从 Eclipse Market place 获取(搜索“Quick Search”)。或者您可以直接从更新站点安装。通过菜单“帮助 >> 安装新软件”打开 Eclipse 安装程序,并将更新站点 URL 粘贴到对话框中(在本文末尾)。然后仅选择“Eclipse Quicksearch”功能,点击“安装”按钮。

链接

Eclipse 更新站点(注意,更新站点链接无法在 Web 浏览器中打开。请参阅上面的安装说明)功能请求、错误报告和一般问题与反馈
如果您是... 
  • Eclipse 用户
  • 希望在工作空间中快速轻松地搜索文本片段和模式
... 请继续阅读!

获取 Spring 新闻通讯

订阅 Spring 新闻通讯,保持联系

订阅

快人一步

VMware 提供培训和认证,助力您的发展。

了解更多

获取支持

Tanzu Spring 提供 OpenJDK™、Spring 和 Apache Tomcat® 的支持和二进制文件,只需一次简单的订阅。

了解更多

即将举行的活动

查看 Spring 社区所有即将举行的活动。

查看全部