现在我做了?然后滚动自动完成,或者开始输入名称(但是没有找到它的一半时间)。
Sublime在很多情况下都找不到文件。例如,我通常拥有所有……
首先要注意的是你这样做 的 不 强> 必须搜索一个 确切的路径 ;在Sublime为您提供可供选择的项目列表和文本条目的任何地方,模糊匹配正在发挥作用。在您的示例中搜索 idx 将列表缩小到包含该顺序中所有字符的所有项目,即使它们彼此不相邻也是如此。
idx
这些条目直观地向您展示了它们是如何匹配的,并且在幕后有一个相当复杂的系统来决定哪些角色能够做出最佳匹配(相对于一些隐藏的评分算法):
除此之外,您还可以使用多个空格分隔的术语来过滤列表。每个术语都应用于前一个术语产生的项目列表,因此不需要按照它们在文件名中出现的顺序提供它们。
这有助于您通常知道文件名称的搜索,并从中可以进一步深入查看路径的某些部分或其他有助于缩小范围的条款:
这里要注意的是,如这些图像所示,文件夹结构是 my/long/directory/structure ,但在面板中看到的文件的名称不包括 my/ 在开始时。
my/long/directory/structure
my/
如果您的项目只包含一个顶级文件夹,则该文件夹不会显示在文件名中。据推测这是因为它对每个文件都是通用的,因此不会成为有用的过滤器。因此试图使用 my 在搜索字段中将不返回任何匹配项,除非其中一个文件具有 m 和a y 在他们的文件名中的某个地方。
my
m
y
如果有多个顶级文件夹,则不是这种情况;在这种情况下,Sublime将在所显示文件的名称中包含根文件夹,因为现在需要能够区分不同文件夹中的文件:
除此之外,请注意,对于您在面板中输入的任何给定过滤器文本,Sublime会记住您在使用该过滤器文本时选择的项目的全文,并使用其中的评分来确定下次匹配的优先级你在同一个面板中搜索。下次使用相同的术语进行搜索时,Sublime会根据您可能再次想要的理论自动预选上次选择的项目。
搜索项及其匹配项保存在会话文件和项目中 sublime-workspace 文件,所以当你从一个窗口移动到另一个窗口并项目到项目你基本上训练Sublime如何找到你想要的文件。
sublime-workspace
我的建议是试着改变你的想法。在我看来,当你试图以更有机的方式查找文件而不是试图完全复制路径时,模糊匹配算法的功能最有效。
相反,我会从我试图首先找到的文件的名称中抛出一些字符,然后添加另一个术语,过滤路径的某些部分,这将消除更多的歧义;一个词 idx s1 在这个例子中,立即找到两个 index.js 包含在的文件 structure1 例如,文件夹。
idx s1
index.js
structure1
在一个更真实的例子中,文件夹的名称可能包含它们所属的组件的名称或者为代码提供逻辑结构的其他东西,所以你可能会这样做 idx con 拉 index.js 来自 controller 文件夹或 idx mod 找到一个 model 文件夹,等等。
idx con
controller
idx mod
model
关于更好/更快的方法,我认为没有一个,至少在一般情况下。 Sublime固有地知道项目中的每个文件,作为索引所有文件的一部分,以支持其他功能,如 Goto Symbol 它使用文件监视器来检测打开文件夹结构的更改。
Goto Symbol
其他任何东西,包括第三方插件或包,需要首先进行冗余文件扫描以累积文件列表,并且还必须复制看Sublime已经在做的文件,以便知道什么时候发生变化。