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