Visual Studio Code的Intellisense非常慢 - 我能做些什么吗?

183

编辑:Pylance在这方面要好得多,并且到目前为止已经解决了与Microsoft以前的Python语言服务器有关的所有问题。

我正在使用VS Code,它在所有领域都很棒,但是代码补全通常太慢了,无法使用。这个例子展示了Intellisense查找本地变量所需的时间,而且这仅仅是在按下ctrl+enter之后进行提示才能完成的。

输入图像描述

我目前还没有找到解决方法,所以我来这里问问是否有其他人遇到了类似的问题,并询问他们如何克服。


14
有解决这个问题的办法吗?我也遇到了同样的情况。即使禁用了所有扩展程序,VsCode v1.33 仍然会出现这种情况。 - cbdeveloper
同样的问题。使用v1.33后,我的情况变得更糟了。我正在使用250GB SSD、16GB RAM和i5-4460 CPU的Windows 10 Pro 64位系统。我认为这不是硬件问题,因为在我看来它似乎足够好了。删除%userprofile%和%appdata%中的适当文件后尝试完全重新安装,但仍然存在同样的问题。禁用所有扩展也没有帮助。如果启用,所有扩展的作业都比屏幕截图中显示的时间要延迟得多。 - ZeferiniX
我在使用新的Microsoft Python语言服务器时运气更好。这可能是一个愚蠢的建议,但请确保您正在使用它。并尝试创建一个全新的项目,因为某些设置可能在工作区文件中定义,而不是在%userprofile%中。 - Anti-Distinctlyminty
1
我也遇到了这个问题。它需要7秒才能弹出。我的笔记本是全新的,但比我又老又慢的旧笔记本更糟糕。 - MadMac
1
如果您能够重现此问题,请在 https://github.com/microsoft/vscode-python/issues 上报告错误(或查看该问题是否已经被报告)。虽然需要一些努力,但这是解决问题的唯一途径。 - Anti-Distinctlyminty
显示剩余6条评论
23个回答

85

原来是一个特定的VS Code扩展造成的问题。
Angular语言服务。禁用它使速度飞快。

尝试这个方法看看是否是某个扩展引起的问题。

  • 打开命令面板(Ctrl+Shift+P)
  • 输入“禁用所有已安装的扩展”
  • 逐个或分组启用它们,并测试智能感知速度

1
这是一个很好的解决方案,至少你知道了罪犯是谁!它解决了问题。 - Sagar Khatri
1
实际上,这应该是被接受的答案。因为在几年的时间里,你最终会拥有数百个扩展程序(你从未知道你已经安装了哪些) :) - Naren
我认为这个解决方案最适合我的使用情况,特别是结合下面答案中将延迟更改为5毫秒的解决方案,它使智能感知更加流畅。谢谢。 - mtirtapradja
另一个简单的“解决方案”是从命令面板中运行“Developer: Reload Window”操作。即 Cmd/Ctrl + Shift + P > “reload” > “Developer: Reload Window”。这比关闭和重新打开VSCode要快得多。 - bradykey
有没有办法找到文件的扩展名?我有很多扩展名,一个一个查看真的不太方便... - IceFire
显示剩余2条评论

52

问题可能是与错误的设置配置有关。
您可能希望确保这些设置已打开:

控制是否在输入时自动显示建议

"editor.quickSuggestions": {
  "other": true,
  "comments": false,
  "strings": false
},

控制快速建议出现的延迟时间(以毫秒为单位)

"editor.quickSuggestionsDelay": 10,

它对我起作用了,但有时它是不一致的。 - Vlad Furman
尝试使用VSCode编写Java代码,但遇到了问题,无法正常工作。 - Ashok kumar Ganesan

43
也许是Jedi。我的意思是它很棒,但...当我在更大的代码库上使用Jedi时,我可以确认有时会非常慢,并且很难弄清楚问题所在... :/

解决方案可能是切换到另一个语言服务器! VSCode Python扩展程序具有“语言服务器”设置:

enter image description here

也称为python.languageServer

Pylance 是微软自己的新语言服务器。我刚试过,感觉速度更快了一些。截至今天,这被标记为预览版。因此未来可能会有改进。


5
对我来说,这解决了问题!延迟太烦人了,Pylance似乎工作得更好,并在某些情况下提供更好的错误检查。 - Quanta
3
我觉得一样,Pylance相较于Jedi要好很多。 - user3482098
公平地说,Jedi已经8岁了且多用途!是的,也许是时候换点新的东西了 ;) - ewerybody
有关Java Intellisense的任何建议吗? - Ashok kumar Ganesan
我也可以确认Pylance比Jedi快得多。有人知道这是什么原因吗? - Rocckk

28

虽然我的回答是关于C ++的,但仍然有一定相关性。

我正在使用Microsoft的C / C ++扩展程序,并且当我将其Intelli Sense Engine设置从默认值切换为带有“上下文感知结果”的标记解析器时,它立即开始显示IntelliSense选项,而不是延迟5秒以上。

因此,也许您可以检查您的语言或环境扩展程序的特定选项。


9
我也发现了将"C_Cpp.intelliSenseCacheSize": 0设置为0的功能。 - Kevin
@kevinf 不错的发现!它在设置中没有显示... https://code.visualstudio.com/docs/cpp/faq-cpp#_ccppintellisensecachesize-number - Andrew
在我的情况下,查找任何符号大约需要一分钟的时间。第二次查找并没有更快。这是一个非远程Linux配置,代码库相对较小。我认为它每次都重新解析所有内容,但不清楚原因。 - Evgen

26

打开命令面板(Ctrl+Shift+P

Command Palette

选择“开发人员: 显示运行中的扩展”

您将获得它们的扩展列表以及它们的重启时间。 list

如果扩展需要超过500毫秒才能激活,则似乎存在问题。

您可以右键单击并停止它。

right click

更多细节...


8

我在VS Code上使用Python时遇到了同样的问题,但是我的解决方法是禁用Jedi IntelliSence,以提高性能。

只需在选项中设置"python.jediEnabled": false即可。

由于内存对我来说不是问题,因此我还启用了代码分析,将解析器树保存在内存中:"python.analysis.memory.keepLibraryAst": true


似乎“python.jediEnabled”选项不再可用。 - Wesley Cheek
"python.analysis.memory.keepLibraryAst" 似乎也不再是一个选项了 :( - Miguel Guthridge

7

我也曾经遇到同样的问题。在VSCode设置中禁用“代码段防止快速建议”选项的复选框似乎能解决加载时间的问题。

禁用快速预览


6
如果您正在使用Angular并且注意到最近几天智能感知变慢,可能是由于其新的“Experimental-ivy”功能中的 Angular语言服务引起的。
您可以通过打开扩展设置来禁用它:

Manage Extensions UI

然后禁用实验性的ivy功能:

Disable ivy


VS Code 在某个时候提示我启用它,我启用了,从那以后智能感知变得非常缓慢。通过上述步骤禁用它,现在又变快了。

Prompt Dialog


2
现在这真是个绝对的噩梦。看起来这确实有很大帮助。我可以看到它正在做很多工作,但我就是不明白为什么像 F12 这样的东西会变得如此缓慢。它只需要查找 imports 并转到指定的文件,但对我来说可能需要十秒钟!我必须手动搜索 class X 而不是直接按 F12。 - Simon_Weaver

5

请在settings.json文件中使用以下数值

"editor.suggest.snippetsPreventQuickSuggestions": false,

4

通过禁用未完全安装的扩展程序,我的问题得以解决。

Visual Studio IntelliCode


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接