Sublime Text 3 中的 binary_file_patterns 和 index_exclude_patterns 有什么区别?

what is the difference between binary_file_patterns and index_exclude_patterns in SublimeText3?

在 SublimeText3 中,binary_file_patterns 排除在文件或模糊搜索(Goto Anything)中找到的文件,而 index_exclude_patterns 阻止文件被索引。

既然我们知道无法找到未索引的文件,并且假设无法追踪的文件不需要索引,那么两者的使用有何区别和含义?

Sublime 根据当前在 window/project 中打开的文件夹维护所有已知文件的目录,并且该文件目录用于填充 Goto Anything 文件列表以及列表当您执行 Find in Files 时搜索到的文件的数量。

您可以使用 file_exclude_patternsfolder_exclude_patterns 设置来控制目录中出现的内容,以阻止文件出现在边栏中(从而出现在目录中)。正如您提到的,您还可以使用 binary_file_patterns 来指示文件仍应出现在侧边栏中,但不应在 Goto Anything 面板中提供或由 Find in Files 搜索。

除此之外,只要开启index_files,那么除了文件目录外,Sublime还会对侧栏中的文件进行索引处理。

索引器使用一定数量的线程(由 index_workers 控制)在后台运行,基本上加载边栏中的每个文件,应用适当的语法定义,然后收集符号列表标记为应该出现在索引中的那些(这是一个 per-syntax 设置)。 index_exclude_patterns 设置指定不应索引的文件,即使它们出现在侧边栏中也是如此。

索引用于支持 Goto Definition/Goto Reference/Goto Symbol in Project 功能;它实际上只是所有索引符号的列表,它们出现在哪些文件中,以及它们在该文件中出现的位置。

您认为未编入索引的文件是无法找到的文件的假设是不正确的;未索引的文件仍然可以出现在侧边栏中并被 Goto Anything 找到,它们只是不为索引提供符号,这意味着上述功能不会显示这些文件的任何内容,但您可以仍然打开并搜索它们。

总的来说,两者的含义是:

  1. 如果您希望某个文件出现在侧边栏中,但又不想在其中搜索或不希望使用 Goto Anything 打开它,请将其添加到 binary_file_patterns.

  2. 如果您希望文件出现在侧边栏中但不为索引提供符号,请将其添加到 index_exclude_patterns 设置中。

  3. 文件可以出现在两种设置中,在这种情况下,您可以在侧边栏中看到它们,但 Sublime 假装它们不存在以实现上述所有功能。