【问题标题】:SublimeText 3 using 100% CPU, "stuck while processing file"Sublime Text 3 使用 100% CPU,“处理文件时卡住”
【发布时间】:2015-05-29 09:36:33
【问题描述】:

我使用 Sublime Text 3 已经有一段时间了,在过去的几周里,我遇到了一个问题,即 Sublime 会产生大量进程,占用我 100% 的 CPU。

下面是 wmic 进程的输出,其中 "name='sublime_text.exe'"

CommandLine                                                                   ProcessId
"C:\Program Files\Sublime Text 3\sublime_text.exe"                            10980
"/C/Program Files/Sublime Text 3/sublime_text.exe" "--crawl" "10980:crawl:1"  12152
"/C/Program Files/Sublime Text 3/sublime_text.exe" "--crawl" "10980:crawl:1"  8420
"/C/Program Files/Sublime Text 3/sublime_text.exe" "--crawl" "10980:crawl:3"  6016
"/C/Program Files/Sublime Text 3/sublime_text.exe" "--crawl" "10980:crawl:3"  12008

当我打开 Sublimes 控制台时,我看到以下几行

worker 8420 appears stuck while processing file /D/dev/project/ext/index.html, killing process
worker 8420 appears stuck while processing file /D/dev/project/ext/build/index.html, killing process

我已经从索引中删除了整个 /D/dev/project/ext 文件夹,然后我将它从项目中完全删除,但这似乎没有帮助。

有人见过这个吗?我真的不想完全重新安装 Sublime。

【问题讨论】:

  • 为了它,你有没有尝试删除整个 Sublime Text 索引数据库?它是位于 Sublime 数据文件夹中的“索引”目录(不要忘记关闭编辑器的每个实例并确保其进程不再运行)。
  • 我确实尝试过,但没有奏效。不过我能弄明白,我现在正在写答案。感谢您的帮助

标签: sublimetext3


【解决方案1】:

你可以试试这个:

shift + super + p:

{
    "color_scheme": "Packages/User/SublimeLinter/Monokai Bright (SL).tmTheme",
    "font_size": 13,

    "folder_exclude_patterns": [".svn", ".git", ".hg", "CVS", "node_modules/*"],
    "binary_file_patterns": ["*.jpg", "*.jpeg", "*.png", "*.gif", "*.ttf", "*.tga", "*.dds", "*.ico", "*.eot", "*.pdf", "*.swf", "*.jar", "*.zip"],
}

参考:

Limit File Search Scope in Sublime Text 2

【讨论】:

    【解决方案2】:

    可能是您打开了一个包含 3rd 方库的项目。

    在我的特殊情况下,如果我不从一些更大的 node.js 应用程序的项目索引 node_modules 目录中排除,我会遇到这种问题。

    Sublime Text 在每次运行时都会尝试刷新索引文件。

    在您的项目中添加排除模式:

    "folder_exclude_patterns":
    [
        "DIR_NAME"
    ]

    【讨论】:

    • 看不出有多大帮助..?
    【解决方案3】:

    我已经多次提出这个问题,所以我想给出一个更完整的答案。

    它们是什么以及如何阻止它们?

    您看到的进程是索引工作人员,它们正在解析项目侧栏中包含的所有文件(是的,每个文件)并为 Goto Anything 构建索引。见Sublime Text 3 File Indexing

    禁用所有索引

    可以通过将"index_files": false, 添加到您的Preferences.sublime-settings (Prefereces > Settings) 来完全禁用此功能。要在系统范围内禁用此功能,请将其添加到您的 Default 设置文件中,或者您可以将其添加到您的 User 设置文件中。任何一个都可以。

    限制索引范围

    但是,如果您不想完全禁用索引,您可以简单地修改从索引中排除的文件的范围:

    (这是一个很好的起始列表,但可以随意编辑以更好地满足您的需求)

    "index_exclude_patterns": [
        "data/*",
        "log/*",
        "logs/*",
        "node_modules/*",
        "vendor/*",
        "*.log"
    ]
    

    此外,您可能还想扩展被视为“二进制”文件的内容(二进制文件也被排除在索引之外):

    "binary_file_patterns": [
        "*.bz2",
        "*.cache",
        "*.dds",
        "*.eot",
        "*.gif",
        "*.gz",
        "*.ico",
        "*.jar",
        "*.jpeg",
        "*.jpg",
        "*.pdf",
        "*.png",
        "*.swf",
        "*.tar",
        "*.tga",
        "*.ttf",
        "*.zip"
    ]
    

    我看到有人建议将文件夹添加到 folder_exclude_patterns 数组中,但这是要在侧栏中隐藏的文件夹列表。虽然侧栏中未显示的文件夹不会被编入索引,但您可能希望显示但不想编入索引的文件或文件夹;在这种情况下应该使用index_exclude_patterns

    限制每个项目的索引

    还可以在 *.sublime-project 文件中为每个项目定义索引排除:

    {
      "folders":
      [
        {
          "path": "src",
          "folder_exclude_patterns": ["vendor"]
        },
        {
          "path": "doc",
          "index_exclude_patterns": ["*.md"]
        }
      ]
    }
    

    限制索引工作进程的数量

    还值得注意的是,您可以使用"index_workers": 1, 限制索引工作进程的数量,其中1 是工作进程的数量。默认情况下,该数字为0,它指示 Sublime 根据可用的 CPU 内核数猜测最佳工作线程数。

    【讨论】:

    • 对于那些在 ubuntu 上安装了 Steam 并安装了一堆游戏的用户:将 .local 或 .local/Steam 添加到您的排除模式中
    • 是的,KdgDev,好点子。我通常不会让 Sublime 抓取我的整个主文件夹,但您绝对不希望 Sublime 尝试索引游戏文件。谢谢!
    【解决方案4】:

    删除包含这两个问题文件的文件夹确实可以解决问题,但前提是我还删除了 Javatar 插件。我已经添加了 Javatar 插件,从那以后我没有添加问题,所以如果我猜是当我删除文件项目并重新启动 Sublime 时,Javatar 插件仍然知道它们并告诉 Sublime 索引他们。卸载并重新安装 Javatar 插件后,删除文件后,一切似乎都正常。

    【讨论】:

      猜你喜欢
      • 2015-04-23
      • 1970-01-01
      • 2018-11-16
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多