在 Visual Studio 2015 中按空格键时停止默认自动完成行为

Posted

技术标签:

【中文标题】在 Visual Studio 2015 中按空格键时停止默认自动完成行为【英文标题】:Stop default Autocomplete behavior when hitting spacebar in Visual Studio 2015 【发布时间】:2015-11-24 22:01:36 【问题描述】:

注意这里的关键字是“默认”。我知道我可以逃脱并且默认行为被中止。我不想每次 IDE 认为它知道我想要什么时都按转义键。 2013 年我不必这样做。

ADDENDUM 2 看来我在这里仍然难以传达我想要的东西。当我按下空格键时,我想要发生的事情是 nothing...我只想在我的屏幕上显示一个空格字符。我希望 IDE 真正插入建议的唯一一次是当我点击标签栏时。我希望这更清楚?

这让我发疯了。 2013 年及之前允许您设置完成字符(也许这是更清晰的?)但在 2015 年,我认为无法停止自动完成的默认行为。

例如,假设我有一个类 Foo,但我还没有指定命名空间,但如果我键入,我在指定命名空间之一中有一个类 FooBar

public void DoSomething(Foo// <-- then a space)

...它会自动输入FooBar。我该如何关闭这种行为?

我应该提到我仍然想要自动完成,只是在标签上。

【问题讨论】:

在按 Space 之前按 Ctrl+Dot。 这会改变默认行为吗? How to cancel autocomplete in Visual Studio 2015 by pressing "Space"? 的可能重复项 不,我不想取消它,我想更改默认行为。取消它很容易,只是烦人。 我并不想提出预防性击键。当我按下空格键时,我希望自动完成的默认行为不自动完成。 【参考方案1】:

对于那些在 VSCode (2022) 中寻找相同内容的人

File -&gt; Preferences -&gt; Settings 并搜索 Accept Suggestion On Commit Character

确保未选中此设置:

【讨论】:

【参考方案2】:

由于 Visual Studio 不断变化,我想这将不断有新的答案。在 Visual Studio 2019 社区版上,没有其他答案对我有用。起作用的是(截至 2022 年 1 月):

编辑 > IntelliSense > 在自动和仅选项卡之间切换 智能感知完成

或者,您可以使用 Ctrl+Alt+Space 切换它。希望这对其他人有帮助。另外,我注意到 Visual Studio 似乎不记得这个设置,我不得不在下次使用 VS 时再次切换它。

【讨论】:

【参考方案3】:

Default IntelliSense completion mode

VS19 Enterprise 的另一个选择:

Visual Studio 2019 Enterprise -> 选项 -> 文本编辑器 -> 高级 -> 默认 IntelliSense 完成模式 -> 下拉菜单 -> 仅选项卡

【讨论】:

【参考方案4】:

Visual Studio 2019 Pro -> 选项 -> 文本编辑器 -> 高级 -> 禁用“响应式代码完成”

这会禁用完成模式,但在 VS 重新启动时不会生效。 您必须在每次重启后再次启用和禁用它,这比使用切换完成模式菜单选项更糟糕。

既然在Options里面,应该是永久设置吧。

【讨论】:

我对此进行了测试,它似乎说明了一个错误配置文件。设置它没有任何作用。关闭它没有任何作用。但是更改设置会导致 Visual Studio 记住编辑/切换完成模式,它没有在启动时注册。【参考方案5】:

对于当前版本的 Visual Studio Code (2020),您可以通过转到 File > Preferences > Settings 然后转到 Extensions > TypeScript 更改为建议模式然后检查 TypeScript: Disable Automatic Type Acquisition。或者,进入设置后,可以在“搜索设置”中搜索“Type Acquisition”,然后勾选TypeScript: Disable Automatic Type Acquisition .

【讨论】:

【参考方案6】:

如果您使用的是 Resharper 和 Visual Studio 2017,您可能需要结合使用现有答案来停止按空格键时出现自动完成行为。这对于评论来说太长了,所以添加了一个答案。

    确保在 Visual Studio 中智能感知切换完成模式已关闭/未选中(如其他答案中所述)。注意:如果您在顶部的 VS 工具栏中打开“文本编辑器”图标,您将看到一个额外的图标,该图标会突出显示并关闭,显示智能感知是打开还是关闭。 和

    在工具栏上的 resharper 下拉菜单中(Resharper > 选项...),转到 IntelliSense > Completing Charactes >,然后取消选中“在空间上完成”框 用于 C#。

现在按空格键不会自动完成(仍然可以使用制表符等自动完成)。

(相关:如果您使用 VSVim,这种空间自动完成功能真的很糟糕,因为默认情况下您不能使用通常的 vim ESC 键来“退出”自动完成模式。例如如果不更改为其他自动完成选项,甚至很难为变量/函数输入 static 修饰符。)

【讨论】:

【参考方案7】:

如果您使用 Vs2017 并且每次启动 Vs 时都会重置设置,我创建了一个小脚本,使用 Visual Commander Extension 在启动时自动禁用空间完成:

enter link description here

【讨论】:

【参考方案8】:

Editor: Accept Suggestion On Enter的设置更改为off

【讨论】:

【参考方案9】:

我刚刚在 Visual Studio 中执行此操作,方法是:

文件 > 首选项 > 设置 > 切换“建议触发字符”

我还关闭了“提交字符时的自​​动建议”和“输入时接受建议” - 但是您可能需要这些设置。

【讨论】:

这似乎适用于 Visual Studio Code。【参考方案10】:

对于所有在 Visual Studio 代码中遇到相同问题的人,请将此行添加到用户设置:

"editor.acceptSuggestionOnCommitCharacter": false

【讨论】:

天啊终于。谢谢你。如果我输入的内容后跟空格太快,它就会一直完成错误的事情。 至少在 2021 年 8 月之前也可以在 UI 中访问该设置。【参考方案11】:

编辑 -> 智能感知 -> 切换完成模式

发件人:https://msdn.microsoft.com/en-us/library/hcw1s69b.aspx

"您也可以更改为建议模式,在该模式中,仅将您键入的文本插入代码中。例如,如果您输入不在列表中的标识符并按 TAB,则在完成模式下,该条目将替换键入的标识符。要在完成模式和建议模式之间切换,请按 CTRL+ALT+SPACEBAR 或单击编辑/智能感知/切换完成模式。"

【讨论】:

非常感谢,这是我多年来遇到的最烦人的默认行为。 我对此赞不绝口。我真的在选项和网络上搜索了几个小时,这个确切的设置并不是我想要的。 不幸的是,“切换完成模式”对我来说是灰色的。 我和@youen 在一起,想多次投票! 我创建了一个帐户只是为了支持此评论。微软,这是我在专业软件中遇到过的最糟糕的默认行为。解决这个问题。

以上是关于在 Visual Studio 2015 中按空格键时停止默认自动完成行为的主要内容,如果未能解决你的问题,请参考以下文章

在粘贴时,Visual Studio 2015将单词转换为空格

如何通过按“空格”取消Visual Studio 2015中的自动完成?

在 Visual Studio 中按下“停止调试”按钮时拦截信号/事件

在 Visual Studio 和 SQL Server 中按架构名称比较架构

如何在 Visual Studio Team 版中按个人请求查看负载测试报告

阻止 Visual Studio 2013 自动删除作业中的多余空格