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

2022-07-14 23:14:57 +08:00
 kouhe3

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 完成的。

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

这样子总算是让两个东西共存了。既然做整行完成任务的 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 补的更对。

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

2842 次点击
所在节点    Visual Studio Code
3 条回复
rpman
2022-07-14 23:26:46 +08:00
这算是符号主义和连接主义的对决吗🐶
haolongsun
2022-07-15 00:51:22 +08:00
tabnine+copilot,感觉像可乐+雪碧,:(你这个打一个字符发送两个 api,io 肯定挺忙的
kouhe3
2022-07-15 09:11:24 +08:00
@haolongsun 我关掉了 Copilot 的自动内联建议。
只在有需要时按 Ctrl Enter 打开侧栏用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/866266

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX