如何在 Sublime Text 中将文件夹排除在索引之外,同时仍将其显示在侧边栏中?

How can I exclude a folder from indexing in Sublime Text, while still showing it in the sidebar?

对于具有许多依赖项的大型项目,例如在 node_modules/ 文件夹中,我注意到频繁出现 CPU 峰值,因为 Sublime 索引了文件夹中的所有文件。

我知道我可以使用 folder_exclude_patterns 设置隐藏文件和文件夹,但我仍然希望文件夹在边栏中可见。

我怎样才能保持例如node_modules/ 在侧边栏中,但将其排除在索引之外?

要从索引中排除文件但将它们保留在边栏中,请使用用户设置中的 binary_file_patterns 设置,例如:

"binary_file_patterns": [
  "*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds",
  "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip",
  "node_modules/**",
  "bower_components/**"
]

确保从您的 Settings - Default 首选项(这里显示为 "*.jpg" 等)复制值,否则您将开始索引二进制文件。

您可以更改个人设置,在Preferences -> Settings - User中添加:

{
    "folder_exclude_patterns":
    [
        ".svn", ".git", ".hg", "CVS",
        "node_modules",
    ],
}

不适用于 ST3(内部版本 3126)。

您可以通过这种方式在侧边栏中显示节点模块文件夹并在其中隐藏文件:

"file_exclude_patterns":
[
    ...,
    "node_modules/**"
]

如果您想隐藏每个节点模块的子文件夹:

"folder_exclude_patterns":
[
    "node_modules/*/**"
]

node_modules 中的所有文件将从搜索中删除,但每个 node_module 子文件夹仍将在边栏中可见。

Sublime Text 3 现在提供了一种将文件和文件夹从索引中排除同时将它们保留在侧边栏中的方法:

  "index_exclude_patterns": [
    "*.log",
    "node_modules/*"
  ]

在我的项目中,我观察到应用更改后索引状态菜单有以下改进:

之前:

index "MyApp" collated in 0.70s from 73934 files
index "MyApp" is using 15167488 bytes for 54234 symbols across 1357673 locations

之后:

index "MyApp" collated in 0.00s from 137 files
index "MyApp" is using 61440 bytes for 730 symbols across 4763 locations

我认为 binary_file_patterns 不起作用,因为我习惯于右键单击我的顶级文件夹并选择“在文件夹中查找”。 folder_exclude_patterns 适用于此,但 binary_file_patterns 仍会搜索所有内容 - 因为“Where”字段会覆盖设置。

因此,您可以使用菜单选项“查找”>“在文件中查找”或右键单击您的顶级文件夹,选择“在文件夹中查找”,然后删除“位置”字段中的文本,以便显示占位符文本“打开文件和文件夹”。

显然你还需要将这个添加到 Preferences/Settings:

    "binary_file_patterns": [
      "node_modules/",
    ],