在 Visual Studio 2015 年点击空格键时停止默认的自动完成行为
Stop default Autocomplete behavior when hitting spacebar in Visual Studio 2015
注意 这里的关键词是"default"。我知道我可以点击 escape 并且默认行为被中止。我不想每次 IDE 认为它知道我想要什么时都按下转义键。我在 2013 年不必这样做。
附录 2 看来我仍然难以传达我在这里的目的。当我按下 space 栏时,我想要发生的是 nothing... 我只想在屏幕上显示一个 space 字符。我希望 IDE 真正插入建议的唯一一次是当我点击标签栏时。我希望这更清楚?
这让我抓狂。 2013 年及之前允许您设置完成字符(也许那是 resharper?)但在 2015 年我看不到停止自动完成的默认行为的方法。
例如,假设我有一个 class Foo
,但我没有指定名称 space,但我有一个 class FooBar
在指定的名称之一 space 中,如果我键入:
public void DoSomething(Foo// <-- then a space)
...它会自动输入 FooBar
。我到底该如何关闭此行为?
我应该提一下,我仍然想要自动完成功能,只是在选项卡上。
编辑 -> 智能感知 -> 切换完成模式
发件人:https://msdn.microsoft.com/en-us/library/hcw1s69b.aspx
"You can also change to suggestion mode, in which only the text you type is inserted into the code. For example, if you enter an identifier that is not in the list and press TAB, in completion mode the entry would replace the typed identifier. To toggle between completion mode and suggestion mode, press CTRL+ALT+SPACEBAR or click Edit/IntelliSense/Toggle Completion Mode."
对于在 Visual Studio 代码 中遇到相同问题的所有人,将此行添加到用户设置:
"editor.acceptSuggestionOnCommitCharacter": false
我刚刚在 Visual Studio 中完成了此操作,方法是:
文件 > 首选项 > 设置 > 切换"Suggest on Trigger Characters"
我也关闭了 "Auto Suggestion on Commit Character" 和 "Accept Suggestion on Enter"
- 但是您可能需要这些设置。
如果您使用 Vs2017 并且每次启动 Vs 时设置都会重置,我创建了一个小脚本,使用 Visual Commander Extension 在启动时自动禁用 space 完成:
将 编辑器的设置:输入时接受建议 更改为 off
如果您使用的是 Resharper 和 Visual studio 2017,您可能需要结合使用现有答案才能在按下 [= 时停止获取自动完成行为42=]。这对于评论来说太长了,所以添加了一个答案。
确保 Visual studio 中的 intellisense Toggle Complete Mode 是 off/unselected(如其他答案中所述)。注意:如果您打开顶部 VS 工具栏中的 "Text editor" 图标,您将看到一个额外的图标,该图标会突出显示和关闭,显示智能感知是打开还是关闭。
和
在工具栏上的 resharper 下拉菜单中(Resharper > 选项...),转到 IntelliSense > 完成字符 > 然后 对于 C#,取消选中 "Complete on space" 框 。
现在按 space 时不会自动完成(仍然可以使用制表符等自动完成)。
(相关旁白:如果您使用 VSVim,space 上的自动完成 真的很糟糕 ,因为默认情况下您不能使用典型的 vim自动完成模式 'get out' 的 ESC 键。例如,即使输入 variable/function 的 static
修饰符也很难不更改为其他自动完成选项。)
对于 Visual Studio Code (2020) 的当前版本,您可以转到 文件 > 首选项 > 设置,然后转到 Extensions > TypeScript 然后检查 TypeScript: Disable Automatic Type Acquisition。或者,进入设置后,您可以在“搜索设置”中搜索“Type Acquisition”,然后查看TypeScript:禁用自动类型获取.
Visual Studio 2019 Pro -> 选项 -> 文本编辑器 -> 高级 -> 禁用“响应代码完成”
这会禁用完成模式,但在 VS 重新启动时不会生效。
您必须在每次重启后再次启用和禁用它,这比使用 Toggle Completion Mode 菜单选项更糟糕。
因为它在选项中,所以它可能应该是一个永久设置。
Default IntelliSense completion mode
VS19 Enterprise 的另一个选项:
Visual Studio 2019 Enterprise -> Options -> Text Editor -> Advanced -> Default IntelliSense completion mode -> Dropdown -> Tab-only
由于Visual Studio在不断变化,我想这会不断有新的答案。 None 的其他答案在 Visual Studio 2019 社区版中对我有用。起作用的(截至 2022 年 1 月)是:
Edit > IntelliSense > Switch between automatic and tab-only
IntelliSense completion
或者,您可以使用 Ctrl+Alt+Space 切换它。希望这对其他人有帮助。另外,我注意到 Visual Studio 似乎不记得这个设置,我不得不在下次使用 VS 时再次切换它。
对于那些在 VSCode (2022)
中寻找相同内容的人
File -> Preferences -> Settings
并搜索 Accept Suggestion On Commit Character
.
确保未选中此设置:
注意 这里的关键词是"default"。我知道我可以点击 escape 并且默认行为被中止。我不想每次 IDE 认为它知道我想要什么时都按下转义键。我在 2013 年不必这样做。
附录 2 看来我仍然难以传达我在这里的目的。当我按下 space 栏时,我想要发生的是 nothing... 我只想在屏幕上显示一个 space 字符。我希望 IDE 真正插入建议的唯一一次是当我点击标签栏时。我希望这更清楚?
这让我抓狂。 2013 年及之前允许您设置完成字符(也许那是 resharper?)但在 2015 年我看不到停止自动完成的默认行为的方法。
例如,假设我有一个 class Foo
,但我没有指定名称 space,但我有一个 class FooBar
在指定的名称之一 space 中,如果我键入:
public void DoSomething(Foo// <-- then a space)
...它会自动输入 FooBar
。我到底该如何关闭此行为?
我应该提一下,我仍然想要自动完成功能,只是在选项卡上。
编辑 -> 智能感知 -> 切换完成模式
发件人:https://msdn.microsoft.com/en-us/library/hcw1s69b.aspx
"You can also change to suggestion mode, in which only the text you type is inserted into the code. For example, if you enter an identifier that is not in the list and press TAB, in completion mode the entry would replace the typed identifier. To toggle between completion mode and suggestion mode, press CTRL+ALT+SPACEBAR or click Edit/IntelliSense/Toggle Completion Mode."
对于在 Visual Studio 代码 中遇到相同问题的所有人,将此行添加到用户设置:
"editor.acceptSuggestionOnCommitCharacter": false
我刚刚在 Visual Studio 中完成了此操作,方法是:
文件 > 首选项 > 设置 > 切换"Suggest on Trigger Characters"
我也关闭了 "Auto Suggestion on Commit Character" 和 "Accept Suggestion on Enter" - 但是您可能需要这些设置。
如果您使用 Vs2017 并且每次启动 Vs 时设置都会重置,我创建了一个小脚本,使用 Visual Commander Extension 在启动时自动禁用 space 完成:
将 编辑器的设置:输入时接受建议 更改为 off
如果您使用的是 Resharper 和 Visual studio 2017,您可能需要结合使用现有答案才能在按下 [= 时停止获取自动完成行为42=]。这对于评论来说太长了,所以添加了一个答案。
确保 Visual studio 中的 intellisense Toggle Complete Mode 是 off/unselected(如其他答案中所述)。注意:如果您打开顶部 VS 工具栏中的 "Text editor" 图标,您将看到一个额外的图标,该图标会突出显示和关闭,显示智能感知是打开还是关闭。 和
在工具栏上的 resharper 下拉菜单中(Resharper > 选项...),转到 IntelliSense > 完成字符 > 然后 对于 C#,取消选中 "Complete on space" 框 。
现在按 space 时不会自动完成(仍然可以使用制表符等自动完成)。
(相关旁白:如果您使用 VSVim,space 上的自动完成 真的很糟糕 ,因为默认情况下您不能使用典型的 vim自动完成模式 'get out' 的 ESC 键。例如,即使输入 variable/function 的 static
修饰符也很难不更改为其他自动完成选项。)
对于 Visual Studio Code (2020) 的当前版本,您可以转到 文件 > 首选项 > 设置,然后转到 Extensions > TypeScript 然后检查 TypeScript: Disable Automatic Type Acquisition。或者,进入设置后,您可以在“搜索设置”中搜索“Type Acquisition”,然后查看TypeScript:禁用自动类型获取.
Visual Studio 2019 Pro -> 选项 -> 文本编辑器 -> 高级 -> 禁用“响应代码完成”
这会禁用完成模式,但在 VS 重新启动时不会生效。 您必须在每次重启后再次启用和禁用它,这比使用 Toggle Completion Mode 菜单选项更糟糕。
因为它在选项中,所以它可能应该是一个永久设置。
Default IntelliSense completion mode
VS19 Enterprise 的另一个选项:
Visual Studio 2019 Enterprise -> Options -> Text Editor -> Advanced -> Default IntelliSense completion mode -> Dropdown -> Tab-only
由于Visual Studio在不断变化,我想这会不断有新的答案。 None 的其他答案在 Visual Studio 2019 社区版中对我有用。起作用的(截至 2022 年 1 月)是:
Edit > IntelliSense > Switch between automatic and tab-only IntelliSense completion
或者,您可以使用 Ctrl+Alt+Space 切换它。希望这对其他人有帮助。另外,我注意到 Visual Studio 似乎不记得这个设置,我不得不在下次使用 VS 时再次切换它。
对于那些在 VSCode (2022)
中寻找相同内容的人File -> Preferences -> Settings
并搜索 Accept Suggestion On Commit Character
.
确保未选中此设置: