如何在 Sublime Text 3 中更快地搜索文件
How to search for files faster in 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
...
但在 sublime 中你必须搜索确切路径。我无法搜索:
my directory index
并获取目录、目录 2、目录...、目录 n 的结果,我只得到空结果,因为没有 my/directory
。大多数时候我不记得完整的文件夹路径,所以要花很多功夫,最后我只是在侧边栏中导航找到需要一些时间的文件。
想知道是否有 better/faster 方法可以做到这一点。基本上通过完整路径的 snippets/keywords 搜索文件。所以 m dir
会 return my/long/directory
,等等
首先要注意的是,您不是必须搜索确切路径;在 Sublime 为您提供 select 的项目列表和文本输入的任何地方,模糊匹配都在起作用。在您的示例中,仅搜索 idx
会将列表缩小到具有该顺序的这些字符的所有项目,即使它们彼此不相邻也是如此。
这些条目直观地向您展示了它们是如何匹配的,并且在幕后有一个相当复杂的系统来决定哪些字符最匹配(相对于一些隐藏的评分算法):
除此之外,您还可以使用多个 space 分隔的术语来过滤列表。每个术语都应用于前一个术语产生的项目列表,因此它们不需要按照它们在文件名中出现的顺序提供。
这有助于在您通常知道文件名称的情况下进行搜索,并且可以从那里进一步深入了解路径的各个部分或有助于缩小搜索范围的其他术语:
这里要注意的是,在这些图像中,文件夹结构是 my/long/directory/structure
,但在面板中看到的文件名称不包括 my/
开始。
如果您的项目仅包含一个顶级文件夹,则该文件夹不会出现在文件名中。大概这是因为它对每个文件都是通用的,因此不会成为有用的过滤器。因此,尝试在搜索字段中使用 my
将 return 没有匹配项,除非其中一个文件的文件名中某处有 m
和 y
。
如果有多个顶级文件夹,则不是这种情况;在这种情况下,Sublime 将在所显示文件的名称中包含根文件夹,因为现在需要能够区分不同文件夹中的文件:
除此之外,请注意,对于您在面板中输入的任何给定过滤文本,Sublime 会记住您在使用该过滤文本时 select编辑的项目的全文,并使用它下次您在同一面板中搜索时,它会根据匹配项的优先级进行评分。下次您使用相同的术语搜索时,Sublime 会根据您可能再次需要的理论自动预先select您上次选择的项目。
搜索词及其匹配项保存在会话文件和项目的 sublime-workspace
文件中,因此当您从 window 移动到 window 并在项目之间移动时,您实质上是在训练 Sublime 如何找到你想要的文件。
我的建议是试着稍微改变一下你的想法。在我看来,当您尝试以更有机的方式查找文件而不是尝试完全复制路径时,模糊匹配算法的功能最有效。
相反,我会从我首先尝试查找的文件的名称中抛出一些字符,然后添加另一个术语来过滤路径的某些部分,这将进一步消除歧义;例如,此示例中的术语 idx s1
会立即找到包含在 structure1
文件夹中的两个 index.js
文件。
在更真实的示例中,文件夹的名称可能包含它们所属的组件的名称或为代码提供逻辑结构的其他内容,因此您可以 idx con
从 controller
文件夹中提取 index.js
或 idx mod
在 model
文件夹中找到一个,依此类推。
关于 better/faster 的方法,我认为没有,至少在一般情况下是这样。 Sublime 天生就知道项目中的每个文件作为索引所有文件的一部分以支持其他功能,例如 Goto Symbol
并且它使用文件观察器来检测打开文件夹结构的变化。
任何其他东西,包括第三方插件或包,都需要首先进行冗余文件扫描以累积文件列表,并且还必须复制文件以观察 Sublime 已经在做的事情,以便知道何时事情变了。
现在我 ⌘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
...
但在 sublime 中你必须搜索确切路径。我无法搜索:
my directory index
并获取目录、目录 2、目录...、目录 n 的结果,我只得到空结果,因为没有 my/directory
。大多数时候我不记得完整的文件夹路径,所以要花很多功夫,最后我只是在侧边栏中导航找到需要一些时间的文件。
想知道是否有 better/faster 方法可以做到这一点。基本上通过完整路径的 snippets/keywords 搜索文件。所以 m dir
会 return my/long/directory
,等等
首先要注意的是,您不是必须搜索确切路径;在 Sublime 为您提供 select 的项目列表和文本输入的任何地方,模糊匹配都在起作用。在您的示例中,仅搜索 idx
会将列表缩小到具有该顺序的这些字符的所有项目,即使它们彼此不相邻也是如此。
这些条目直观地向您展示了它们是如何匹配的,并且在幕后有一个相当复杂的系统来决定哪些字符最匹配(相对于一些隐藏的评分算法):
除此之外,您还可以使用多个 space 分隔的术语来过滤列表。每个术语都应用于前一个术语产生的项目列表,因此它们不需要按照它们在文件名中出现的顺序提供。
这有助于在您通常知道文件名称的情况下进行搜索,并且可以从那里进一步深入了解路径的各个部分或有助于缩小搜索范围的其他术语:
这里要注意的是,在这些图像中,文件夹结构是 my/long/directory/structure
,但在面板中看到的文件名称不包括 my/
开始。
如果您的项目仅包含一个顶级文件夹,则该文件夹不会出现在文件名中。大概这是因为它对每个文件都是通用的,因此不会成为有用的过滤器。因此,尝试在搜索字段中使用 my
将 return 没有匹配项,除非其中一个文件的文件名中某处有 m
和 y
。
如果有多个顶级文件夹,则不是这种情况;在这种情况下,Sublime 将在所显示文件的名称中包含根文件夹,因为现在需要能够区分不同文件夹中的文件:
除此之外,请注意,对于您在面板中输入的任何给定过滤文本,Sublime 会记住您在使用该过滤文本时 select编辑的项目的全文,并使用它下次您在同一面板中搜索时,它会根据匹配项的优先级进行评分。下次您使用相同的术语搜索时,Sublime 会根据您可能再次需要的理论自动预先select您上次选择的项目。
搜索词及其匹配项保存在会话文件和项目的 sublime-workspace
文件中,因此当您从 window 移动到 window 并在项目之间移动时,您实质上是在训练 Sublime 如何找到你想要的文件。
我的建议是试着稍微改变一下你的想法。在我看来,当您尝试以更有机的方式查找文件而不是尝试完全复制路径时,模糊匹配算法的功能最有效。
相反,我会从我首先尝试查找的文件的名称中抛出一些字符,然后添加另一个术语来过滤路径的某些部分,这将进一步消除歧义;例如,此示例中的术语 idx s1
会立即找到包含在 structure1
文件夹中的两个 index.js
文件。
在更真实的示例中,文件夹的名称可能包含它们所属的组件的名称或为代码提供逻辑结构的其他内容,因此您可以 idx con
从 controller
文件夹中提取 index.js
或 idx mod
在 model
文件夹中找到一个,依此类推。
关于 better/faster 的方法,我认为没有,至少在一般情况下是这样。 Sublime 天生就知道项目中的每个文件作为索引所有文件的一部分以支持其他功能,例如 Goto Symbol
并且它使用文件观察器来检测打开文件夹结构的变化。
任何其他东西,包括第三方插件或包,都需要首先进行冗余文件扫描以累积文件列表,并且还必须复制文件以观察 Sublime 已经在做的事情,以便知道何时事情变了。