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

Jer*_*acs 25 c# ide settings options visual-studio-2015

注意这里的关键字是"默认".我知道我可以点击转义,默认行为会中止.每次IDE认为它知道我想要什么时,我都不想点击转义键.我没必要在2013年这样做.

附录2看来我仍然难以沟通我在这之后所做的事情.当我按下空格键时,我想要发生的事情就是什么 ......我只想在屏幕上显示一个空格字符.我希望IDE实际插入建议的唯一一次是当我点击标签栏时.我希望更清楚?

这让我疯了.2013年之前允许你设置完成字符(也许是resharper?)但是在2015年我看不到停止自动完成的默认行为.

例如,假设我有一个类Foo,但我没有指定名称空间,但我有一个类FooBar指定名称空间,但是如果我键入,我在其中一个指定的名称空间中:

public void DoSomething(Foo// <-- then a space)
Run Code Online (Sandbox Code Playgroud)

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

我应该提一下,我仍然想要自动完成,只是在选项卡上.

小智 32

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

来自:https://msdn.microsoft.com/en-us/library/hcw1s69b.aspx

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

  • 非常感谢,这是我多年来遇到的最烦人的默认行为. (3认同)
  • 我不能对此表示足够的赞同。我实际上在选项和网络上搜索了几个小时,以查找这个确切的设置,而这并不是我一直在寻找的。 (2认同)
  • 不幸的是,“切换完成模式”对我来说是灰色的。 (2认同)
  • 我和@youen 一样想要多次投票! (2认同)
  • 我注册了一个帐户只是为了支持这个评论。微软,这是我在专业软件中遇到过的最糟糕的默认行为。解决这个问题。 (2认同)

小智 7

对于所有在Visual Studio Code中有相同问题的人,请将以下行添加到“用户设置”中:

"editor.acceptSuggestionOnCommitCharacter": false
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你做的这些。当你尝试输入“int i”,但不小心在“in”后面按空格,并且 VSCode 会从随机包中自动填充一些荒谬的冗长类名,最终得到“InvalidAsyncThreadPoolExecutionContextWithoutCancellationTokenForAbsurdStackOverflowExample i”时,这绝对是令人抓狂的。 (4认同)
  • 天哪,终于来了。谢谢。如果我太快地输入一些内容,然后输入空格,它就会不断地完成错误的事情。 (3认同)

Sna*_*dlt 7

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

File -> Preferences -> Settings并搜索Accept Suggestion On Commit Character.

确保未选中此设置: 接受关于提交字符的建议


FXQ*_*der 5

如果您使用的是Resharper和 Visual studio 2017,您可能需要使用现有答案的组合来停止按空格键时获得自动完成行为。对于评论来说太长了,因此添加了答案。

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

  2. 在工具栏上的 resharper 下拉列表中(Resharper > 选项...),转到IntelliSense > 完成字符 >,然后取消选中 C# 的“在空间上完成”框

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

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