快人一步
VMware 提供培训和认证,助力您的发展。
了解更多您是 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 编辑器或视图中选中一段文本,当您打开快速搜索时,该字符串将自动输入到搜索框中。开始输入以替换它。例如,您可以在控制台中选中一个日志或错误消息字符串,以便快速搜索它。
如果没有选中任何内容,则您的上次搜索将输入到搜索框中。当您反复搜索相同的模式时,这很有帮助。
那么,这是如何做到的呢?说实话,我们之所以能有很大提升,是因为现代硬件确实相当快。当您使用高度优化的原生 Java 正则表达式时,快速的 CPU、大容量的 RAM 和操作系统中良好的文件系统缓存能够发挥很大作用。
故事中另一个更有趣的部分是,您“体验”到的速度实际上有点像错觉。在最坏的情况下,您可能会将一个唯一的搜索词粘贴到对话框中,然后不得不等待几秒钟,因为它会搜索您工作空间中的所有文件。实际上,您很少会遇到这种最坏的情况。所以,让我们看看隐藏在神奇幕布后面的两个“技巧”。(注:我并非声称发明了这些技术。我确信它们以前曾被用于提供响应式搜索体验。本文是关于我如何使用这些技术为我自己和其他 Eclipse 用户创建了一个不错的文本搜索工具。)
技巧 1:异步性
一旦您输入第一个字符,搜索过程就会启动,并开始搜索与您的查询匹配的内容。结果一经找到就会立即显示。通常,单个字符的搜索在几乎任何文件中都会有很多匹配项。 因此,对话框会立即填充结果。为了避免对话框结果过多,当达到约 200 个结果的限制时,搜索器会暂停。
当您输入另一个字符时,搜索词会更新。但不是从头开始重新搜索,而是在正在运行的搜索进程内部更新搜索词。这意味着后续找到的任何结果都将与新的搜索词匹配。但是,已经找到的结果呢?它们不仅不是无用的,我们知道它们已经包含了新查询的结果!例如,如果我们输入“av”,那么任何包含“av”的内容显然也必须包含“a”。因此,我们只需对旧查询“a”的结果进行过滤,排除不匹配新查询“av”的结果即可。这比从头开始重新搜索要快得多,因为我们只需过滤相对较少数量的内存中的项目,而不是再次扫描文件系统。因此,您在输入时更新是即时发生的。
技巧 2:优先级划分
第二个技巧是“优先级划分”。如果任其运行,快速搜索引擎最终会遍历您工作空间中的所有文件。但它会尝试智能地优先遍历您可能更感兴趣的文件。我们实现这一点的方式并不是特别复杂。我们只是根据当前在编辑器中打开的文件来划分优先级。最高优先级分配给“当前活动编辑器”。然后是其他编辑器中打开的文件。接着是与这些文件位于同一文件夹中的文件,依此类推。
这有两个好处。首先,它使搜索更快地返回您感兴趣的结果。其次,它使更感兴趣的结果出现在列表顶部附近。
要单独安装,您可以从 Eclipse Market place 获取(搜索“Quick Search”)。或者您可以直接从更新站点安装。通过菜单“帮助 >> 安装新软件”打开 Eclipse 安装程序,并将更新站点 URL 粘贴到对话框中(在本文末尾)。然后仅选择“Eclipse Quicksearch”功能,点击“安装”按钮。