首页 > 解决方案 > 如何在 Sublime Text 3 中更快地搜索文件

问题描述

现在我会⌘t滚动自动完成,或者开始输入名称(但有一半时间找不到它)。

Sublime 在很多情况下都找不到文件。例如,我通常将所有文件称为index.<ext>嵌套在某个文件夹中。所以我可能有:

my/long/directory/structure/index.js
my/long/directory/structure2/index.js
my/long/directory/structure3/index.js
my/long/directory/structure.../index.js
my/long/directory/structuren/index.js
my/long/directory/index.js
my/long/directory2/index.js
my/long/directory.../index.js
my/long/directoryn/index.js
my/long/index.js
my/index.js
...

但在崇高你必须寻找一个确切的路径。我无法搜索这个:

my directory index

并获得目录,目录2,目录...,目录的结果,我只是得到空结果,因为没有my/directory. 大多数时候我不记得完整的文件夹路径,所以这样做需要付出很多努力,我最终只是在侧边栏中导航以查找需要一些时间的文件。

想知道是否有更好/更快的方法来做到这一点。基本上通过完整路径的片段/关键字搜索文件。所以m dir会返回my/long/directory等。

标签: searchsublimetext3workflow

解决方案


首先要注意的是,您不必搜索确切的路径;在 Sublime 为您提供可供选择的项目列表和文本条目的任何地方,模糊匹配都在发挥作用。在您的示例中,仅搜索idx会将列表范围缩小到按该顺序具有这些字符的所有项目,即使它们彼此不相邻。

这些条目直观地向您展示了它们是如何匹配的,并且在幕后有一个相当复杂的系统来决定哪些字符进行最佳匹配(相对于一些隐藏的评分算法):

转到任何一个

除此之外,您可以使用多个空格分隔的术语来过滤列表。每个术语都应用于前一个术语产生的项目列表,因此不需要按照它们在文件名中出现的顺序提供它们。

这有助于在您通常知道文件名称的地方进行搜索,并且可以从那里进一步深入了解路径段或其他有助于缩小范围的术语:

转到任何两个

这里需要注意的是,如这些图像中所见,文件夹结构为my/long/directory/structure,但面板中所见文件的名称不包括my/开头的 。

如果您的项目仅包含一个顶级文件夹,则该文件夹不会出现在文件名中。大概这是因为它对每个文件都是通用的,因此不会成为有用的过滤器。因此,尝试my在搜索字段中使用将不会返回任何匹配项,除非其中一个文件的文件名中有一个m和一个y

如果有多个顶级文件夹,则不是这种情况;在这种情况下,Sublime 将在文件名中包含根文件夹,因为现在需要能够区分不同文件夹中的文件:

转到任何东西三

除此之外,请注意,对于您在面板中输入的任何给定过滤器文本,Sublime 会记住您在使用该过滤器文本时选择的项目的全文,并在其评分中使用它来确定下次匹配的优先级您在同一面板中搜索。下次您使用相同的词进行搜索时,Sublime 会根据您可能再次想要它的理论自动预先选择您上次选择的项目。

搜索词及其匹配项保存在会话文件和项目sublime-workspace文件中,因此当您从一个窗口移动到另一个窗口和从一个项目移动到另一个项目时,您实际上是在训练 Sublime 如何找到您想要的文件。

我的建议是试着稍微改变一下你的想法。在我看来,当您尝试以比尝试完全复制路径更有机的方式查找文件时,模糊匹配算法的功能最有效。

相反,我会先从我要查找的文件名中抛出几个字符,然后添加另一个术语,该术语过滤路径的某些部分,这将进一步消除歧义;例如,此示例中的一个术语会idx s1立即查找文件夹index.js中包含的两个文件。structure1

在更真实的示例中,文件夹的名称可能包含它们所属的组件的名称或为代码提供逻辑结构的其他内容,因此您可以从文件夹中idx con提取或在文件夹中找到一个,依此类推。index.jscontrolleridx modmodel

关于更好/更快的方法来做到这一点,我认为至少在一般情况下没有。Sublime 天生就知道项目中的每个文件,作为索引所有文件以支持其他功能的一部分,例如 Goto Symbol,它使用文件观察器来检测打开文件夹结构的更改。

其他任何东西,包括第三方插件或包,都需要首先进行冗余文件扫描以累积文件列表,并且还必须复制 Sublime 已经在监视的文件,以便知道事情何时发生变化。


推荐阅读