在 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 -> Preferences -> 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 中按架构名称比较架构