使用100%CPU的SublimeText 3,"处理文件时卡住"

ekb*_*ber 17 sublimetext3

我一直在使用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
Run Code Online (Sandbox Code Playgroud)

当我打开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
Run Code Online (Sandbox Code Playgroud)

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

谁看过这个吗?我真的不想完全重新安装Sublime.

小智 22

你可以试试这个:

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"],
}
Run Code Online (Sandbox Code Playgroud)

引用:

在Sublime Text 2中限制文件搜索范围


Pio*_*ski 14

可能是您打开了包含第三方库的项目.

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

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

在项目中添加排除模式:

"folder_exclude_patterns":
[
    "DIR_NAME"
]
Run Code Online (Sandbox Code Playgroud)


Kar*_*bur 5

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

它们是什么,我该如何阻止它们?

您所看到的过程是建立索引的工作程序,这些工作程序正在分析项目侧栏中包含的所有文件(是,每个文件),并为Goto Anything建立索引。请参阅Sublime Text 3文件索引

禁用所有索引

可以通过添加"index_files": false,Preferences.sublime-settingsPrefereces > Settings)中来完全禁用此功能。要在系统范围内禁用此功能,可以将其添加到Default设置文件中,也可以将其添加到User设置文件中。两者都会起作用。

限制索引范围

但是,如果您不想完全禁用索引编制,则可以简单地修改不包括在索引编制中的文件范围:

(这是一个很好的开始清单,但是可以随时进行编辑以更好地满足您的需求)

"index_exclude_patterns": [
    "data/*",
    "log/*",
    "logs/*",
    "node_modules/*",
    "vendor/*",
    "*.log"
]
Run Code Online (Sandbox Code Playgroud)

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

"binary_file_patterns": [
    "*.bz2",
    "*.cache",
    "*.dds",
    "*.eot",
    "*.gif",
    "*.gz",
    "*.ico",
    "*.jar",
    "*.jpeg",
    "*.jpg",
    "*.pdf",
    "*.png",
    "*.swf",
    "*.tar",
    "*.tga",
    "*.ttf",
    "*.zip"
]
Run Code Online (Sandbox Code Playgroud)

我见过有人建议将文件夹添加到folder_exclude_patterns阵列中,但这是要隐藏在侧栏中的文件夹列表。虽然未显示在侧栏中的文件夹不会建立索引,但可能有一些您确实要显示但不希望建立索引的文件或文件夹;在这种情况下index_exclude_patterns应使用。

每个项目的限制索引

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

{
  "folders":
  [
    {
      "path": "src",
      "folder_exclude_patterns": ["vendor"]
    },
    {
      "path": "doc",
      "index_exclude_patterns": ["*.md"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

限制索引工作进程数

这也是值得注意的是,你可以限制索引的工作进程与数"index_workers": 1,这里1是工作进程的数目。默认情况下,该数字0指示Sublime进行猜测,并根据可用的CPU内核数来指示最佳工作线程数。


ekb*_*ber 2

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