8

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

 3 years ago
source link: https://blog.walterlv.com/post/fantastic-intellisense-behavior-of-visual-studio.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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

2020-06-09 07:52

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


自动完成与建议完成

作为本文的背景,你可能需要了解 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 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

如果你想持续阅读我的最新博客,请点击 RSS 订阅,或者前往 CSDN 关注我的主页

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK