[Visual Studio Code] Visual Studio Code IntelliCode 与 LSP 联动进行整行补全。


VS Code 中 IntelliCode quicksuggestions, Tabnine, GitHub Copilot 共存

https://www.v2ex.com/t/860015#reply4

楼主是 Windows 用户。平时都是用 VS Code + Tabnine + Copilot, 有时用 JetBrains IDE, 很少用 Visual Studio 2022.

我印象里一直觉得
IntelliCode 虽然是 AI-assisted Intelligent code completion , 但是和 Tabnine 相比实在不是很聪明, 跟 Copilot 相比就更笨了。

不过用过一段时间的 Copilot 之后我就发现, 这副驾驶虽然很强,但是它不鸟 LSP 啊,还有 Tabnine 也是自顾自给建议,完全不管 LSP.

这一点让我不是很爽…因为日常使用的时候,弹窗建议由 LSP 完成,内联建议是 Tabnine 完成的。

为了让两个东西配合起来,我去改了一下设置。然后结果是这个样子。

[Visual Studio Code] Visual Studio Code IntelliCode 与 LSP 联动进行整行补全。插图

这样子总算是让两个东西共存了。既然做整行完成任务的 Tabnine 不吃 LSP ,只能让 IntelliCode 在前面牵制住 Tabnine.

然后我在想,整行完成的工作就只能让 Tabnine 和 Copilot 这种和 LSP 不沾边的 AI 模型做吗?

与 LSP 间接联动的 VS Code IntelliSense

后来我发现 VS Code 的 IntelliSense 是由语言扩展加持的。而语言扩展可以联动 LSP, 于是在 VS Code 里看到的参数信息和 quick info 可以是 LSP 支持的。

IntelliSense 中的 IntelliCode 的历史

IntelliCode 虽然是 AI 辅助的,但是我总觉得这个东西比 Copilot 笨太多了。

我看了一下,IntelliCode 是 2018 年出的, 一开始只支持 C#.

不过,从去年开始,VS IntelliCode 就能进行整行补全了, VS Code IntelliCode 整行补全的扩展 vscodeintellicode-completions也在今年发布了.

(原来去年 IntelliCode 就已经可以整行补全了吗?我才发现) 🤣

总结

现在捋一下。

IntelliCode Completions 是 IntelliCode 的实验性功能,
IntelliCode 是由 IntelliSense 语言扩展支持的,
语言扩展对接 LSP.

所以 IntelliCode Completions 是一个需要 IntelliCode 模型,IntelliSense 扩展和 LSP 的功能。

那这就有意思了 🤔

因为 Tabnine 和 Copilot 他们的补全都是不靠 LSP 的。

但是 IntelliCode 这个就特殊 🤣

现在 vscodeintellicode-completions 还在实验阶段,不知道有 LSP 的加持,会不会比 Tabnine 补的更对。

反正弹窗建议和内联建议肯定是可以完美共存的 。

[Visual Studio Code] Visual Studio Code IntelliCode 与 LSP 联动进行整行补全。插图(1)