取消

Visual Studio 智能感知提示里的奇妙行为一览

本文就是个吐槽,感兴趣一一去报给微软。


自动完成与建议完成

作为本文的背景,你可能需要了解 Visual Studio 有一个设置:“在建议完成模式和标准完成模式之间切换”。就是下面这个按钮,你可以在工具条上找到。

建议完成和标准完成

你一定很差异,看着这翻译,你知道“选中”对应“建议完成模式”还是“标准完成模式”呢?你知道什么是建议完成模式,什么是标准完成模式吗?

不要紧,这不是翻译的问题,因为英文原文也一样令人摸不着头脑。

suggestion and standard completion modes

那么这件事就交给本文来处理吧!

用什么模式

如上图所示,如果不选中那个图标,那么智能感知会更智能,默认回车即上屏,而不用再打字母了。所以我更倾向于不要选中那个图标。至于那个图标到底哪个是建议完成模式哪个是标准完成模式,已经不重要了(反正就算知道了,名字也不直观)。

奇妙行为

接下来我们的讨论中,前面所述的图标都不选中,这样能最大程度体现智能感知的智能程度。

带星 V.S. 不带星

大家知道 Visual Studio 2019 开始,微软开始基于机器学习来训练智能感知的建议。凡通过机器学习建议的项都会用“★”(星号)标注。

带星的建议

然而,一旦没有任何项带星,那么就没有项被选中。

无带星的建议

奇妙行为:有机器学习带星的项才会自动选中,没有带星的项就不会自动选中。

全小写 V.S. 部分大写

注意看下面的图片中的提示:

大小写

使用 preso 能自动选中 PresentationSource 而使用 Preso 则不会自动选中 PresentationSource

奇妙行为:如果完全用小写字母打字,则可以按词匹配前几位字母;如果出现了大写字母,那么出现的小写字母就默认不算做新单词。

直接输入 V.S. 删除后输入

看看下面的动图:

大小写

注意到了什么?如果是输入单词,那么会默认选中;但删除了字母后再输入单词,就不会默认选中了。

奇妙行为:直接输入和删除后再输入,默认选中的行为不同;删除后再输入不会默认选中。

输入单词 V.S. 输入点

从前面的示例可以看到,如果能满足 Visual Studio 的输入要求输入单词(鬼知道是什么要求),那么基本能直接选中。但按要求输入点“.”却不一定能直接选中。

所以,如果你能熟练摸透 VS 单词的补全逻辑,那么可能仅在输入点“.”的时候才会遇到有时选中有时不选中的问题。

奇妙行为:?

不同种类的空格

当即将输入的代码是枚举这种很封闭的语句时,直接自动选中(虽然自动提示的经常不是想要的):

自动选中

然而当输入的代码是命名这种比较开放的语句时,不会自动选中(虽然自动提示的名字很想要):

不会自动选中

奇妙行为:同样是空格,有时会自动选中,有时不会自动选中。

吐槽

可以发现,虽然 Visual Studio 提供了一个是否自动选中智能感知提示选项的开关,但这个开关的行为并不总能反映出实际的使用效果。

  • 如果选中了按钮(见本文开头所述),则一定不会自动选中智能感知提示
  • 如果没选中按钮,则是否自动选中智能感知提示简直随缘

你要说,Visual Studio 猜得准的时候会自动选中,猜不准的时候不会自动选中。但实际使用效果却是,你自认为猜得准的时候,我却不需要你的提示;你自认为猜不准的时候,给出的建议却非常完美。不如直接按照开关来,简单利索,还不用在开发的时候琢磨到底该不该按上下来一轮选择。

本文会经常更新,请阅读原文: https://blog.walterlv.com/post/fantastic-intellisense-behavior-of-visual-studio.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

知识共享许可协议

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 ([email protected])

登录 GitHub 账号进行评论