Visual Studio 2017:禁用 CodeSnippets 的 Intellisense

Visual Studio 2017: Disable Intellisense for CodeSnippets

我正在使用 Visual Studio 2017 企业版,版本 15.3.3

我觉得 IntelliSense 有一些新的代码完成功能。此功能的一个特点是,在编写类型时会自动建议字段名称。

SpacePosition s.. // 以 s 开头,Intellisense 建议 "space"、"position" 和 "spacePosition"

我总体上喜欢这个功能,但不喜欢代码片段。使用截断的代码我遇到了问题,在按下 Tab 键(用于导航到下一个文字)后,文字的名称会自动替换为 IntelliSense。

在我的示例中,我想将 属性 命名为 "other",然后跳转到代码段中的下一个文字。但是由于 IntelliSense,属性 名称被替换为 "spacePosition"。

有什么方法可以禁用代码片段中的 IntelliSense 功能吗?

我在 Visual Studio 代码中找到了相同问题的解决方案: Whosebug article 但不适用于 Visual Studio

How to: Manage Code Snippets

访问代码片段管理器

1.) 在 工具 菜单中,单击 代码片段管理器 。快捷键 Ctrl+K,Ctrl+B

如何:更改代码段行为

更改代码段行为。

1.) 转到 工具 > 选项 > 文本编辑器 > IntelliSense > 代码段行为

2.) 查看图片。

现在没有这样的选项可以在代码片段中禁用此智能感知功能,但您可以尝试在键入 'other' 后单击“Esc”键,然后单击'Tab' 跳转到下一个文字的键,请检查以下内容:

禁用 Tools/Options/TextEditor/C#/IntelliSense 中的名称建议。这就是造成这种胡说八道的原因。似乎 MS 后来意识到,他们通过添加可以极大地改变旧行为的功能而不给他们禁用它的方法来提升编码器。现在有这样一个复选框。 因为这个哈哈,我差点卸载了这个工作室。不确定,这可能是一个很好的功能,但我太习惯 Tab 代码片段了,没有它我会更好。

这实际上在 Visual Studio 2019 中对于 classes 如果它是对当前上下文有效的 class(即不存在于不在当前 class 命名空间或在文件的 using 语句中)。

这是我的示例片段

代码段定义

片段使用

这里是一个示例,其中我使用两个不同的 classes 作为第二个片段,一个是有效的 class 名称并且可以使用制表符自动完成,另一个则不是工作,因为 class 需要使用文件中当前缺少的语句添加额外的命名空间:

所以我看到了两个选项。

  1. 使用 sucky 取消任何自动完成逻辑。
  2. 确保您有正确的 using 语句。您甚至可以使用 import 声明将 using 语句添加到您的代码片段中: