如何阻止 Intellisense 将“var”更改为“VariableDeclarationSyntax”或其他类似的“Variable”类?

问题描述 投票:0回答:1

总的来说,我对 C# 和 Visual Studio 编码还很陌生,所以我真的不知道如何解决这个问题。智能感知很棒,但它似乎也迫使我进行修正,甚至到了忽略完美匹配的程度。

例如,如果我输入全小写的“var”,Intellisense 将打开名称中包含“var”的事物列表。它坚持我想要“VariableDeclarationSyntax”,而不是从列表中选择“var”的精确匹配。我不。我想要“var”原样。我知道很多人说我们应该使用 C# 的完整代码,而不是使用 var 进行简写,但当我处理对象时,我可以从构造函数中读取它。不值得花时间打字。

同样,当我创建一个名为“service”的变量时,Intellisense 坚持认为我想要“Services”而不是“service”。我不能使用空格或制表符来保留“服务”,所以它基本上迫使我要么使用某种方法来结束智能感知(我不知道如何),要么接受它然后手动将其更改回来。什么样的“智能”程序会直接跳过您之前创建的一行变量?我的变量“服务”甚至不在 Intellisense 中可接受的选择列表中!

任何帮助或信息都会很棒。我不明白为什么它忽略了明显的选项(即那些根据情况完全匹配的选项)并试图不遗余力地给我提供远远存在的建议。

我什至不知道从哪里开始。尝试重新输入它没有任何作用。我必须删除回开头大写“V”才能再次启动“var”,当使用“Services”时与“service”相同。然后,当我按空格键或选项卡时,它迫使我再次选择相同的内容。我可以手动将“V”更改为“v”,然后删除其他所有内容,但这很麻烦。我可以对“服务”做同样的事情来使“服务”,但同样,使用应该使事情变得更容易的东西需要做很多额外的工作。我不知道什么会改变这一切。我搜索了与这个问题相匹配的内容,但 Stack Overflow 上没有任何结果。谷歌也没有帮助。

这是正在发生的事情的图像。请注意,我在我工作的位置上方两行处声明了一个变量。我试图引用我已经分配给另一个变量的变量。但它不想给我这个选择。按空格键、制表符或右箭头都会给我生成的代码片段。唯一不这样做的是像左箭头这样的东西,然后我必须直接使用右箭头才能回到原来的位置。好痛苦啊!

Image of Visual Studio 2022 in action

visual-studio intellisense
1个回答
0
投票

根据您的描述,“智能感知”看起来只是将键入的代码更改为类名。

如果问题能更详细就更好了,比如一些截图。

根据你的问题的话,我可以认为一个场景,你的默认VS智能感知性能可能会被其他一些扩展改变。

比如经典的VS扩展Resharper有一个功能:

过滤器的持续状态ufeff

在这种情况下,如果您通过某种方式过滤智能感知并设置仅过滤类,则默认行为已被覆盖并且更改将持续存在。

据我所知,VS intellisense 不应该有方法来持久更改过滤结果中的 intellisense 行为。

如果您确定您这边没有额外的分机。您可以尝试重置 Visual Studio:

/重置设置(devenv.exe)

重置所有设置

或修复 Visual Studio:

修复 Visual Studio

另外,您也可以尝试重新打开VS,然后检查问题是否仍然存在(排除临时问题)。或者创建一个新项目(以排除特定项目问题。)。

对于你的情况,截图会更好,intellisense只提供类别选择吗?

如果不是只有classes,是不是先输入var成功,然后改成classes名?

请显示更多详细信息。


Visual Studio 和 VSCode 中的智能感知实现是不同的。

Visual Studio 的智能感知与 IDE 本身紧密集成。它的工具比较旧。

VS Code 严重依赖 LSP(语言服务器协议),它是不同的且更新的。

IntelliCode 只是 Visual Studio 的智能感知增强功能。它使用机器学习来提供更智能的代码完成建议。

智能感知可能会导致您的情况,但这只是一个额外的功能。你可以去这个地方禁用它:

工具 -> 选项 -> IntelliCode -> 常规/高级。

您可以禁用intelliCode中的所有设置,这不会破坏Visual Studio原有的intellisense功能。

© www.soinside.com 2019 - 2024. All rights reserved.