Visual Studio 中的许多功能旨在帮助你编写所需的代码,从确保代码能够编译无误,到协助你设置代码样式。 现在,使用版本 17.5 中引入的拼写检查器功能,Visual Studio 甚至可以确保拼写准确。
拼写检查器可用于任何 C#、C++ 或 Markdown 文件。 启用拼写检查器后,Visual Studio 会将检测到的任何单词标记为拼写错误的单词。 Visual Studio 还建议备用拼写并有助于更正它们。 当这些拼写错误是标识符时,该功能甚至会进行上下文重命名,以便代码仍可编译。
可以使用主工具栏上的 “切换拼写检查器 ”按钮或从菜单栏中选择 “编辑>高级>切换拼写检查器 ”命令来关闭或打开拼写检查器。
如何使用它?
当插入符号位于拼写错误时,快速操作 提供修复这些拼写错误的解决方案。 可以使用键盘快捷方式 Ctrl+或Alt+Enter 来启动快速作。 上下文菜单出现时,Visual Studio 会显示三个选项来处理拼写问题。
如果任一字典都提供拼写建议,Visual Studio 将显示它们。 如果多个字典提供建议,Visual Studio 会按字典对其建议进行分组。 对于字符串和注释,选择这些建议之一将进行一次就地替换。 对于C++或 C# 文档中的标识符,接受建议会导致重构/重命名,以更新标识符的所有实例以确保代码编译。
还可以选择忽略拼写问题。 通过选择忽略此问题,Visual Studio 在本地计算机上的 AppData 目录中创建一个 exclusion.dic 文件。 选择忽略某个单词后,拼写检查器会将其忽略在 Visual Studio 的所有实例中。
它的工作原理是什么?
由于 C#、C++ 和 Markdown 都使用英语作为关键字的语言,因此 Visual Studio 通常使用“英语(美国)”或“en-us”字典进行拼写检查。 Visual Studio 会检查 Windows 的实例,了解它使用的显示语言,如果不是“en-us”,它也会使用该字典。
注释
C# 和C++在这些语言中还具有关键字的其他字典,从而阻止将“namespace”或“alloc”等单词标记为拼写错误的单词。
此功能早期用户的反馈告知我们,开发人员只想了解他们当前正在使用的文档中的错误。 为了回应那个反馈,拼写检查器仅扫描在编辑器中处于活跃状态的文档。
下表显示了 拼写检查器 在扫描代码文档时所查看的一些启发式规则:
| 代码中的内容 | Visual Studio 检查的内容 | 为什么? |
|---|---|---|
| 你好 | 你好,你好 | 始终检查正确和常见的名词 |
| HelloWorld | 你好, 你好, 世界, 世界 | 中间大写用来标记单词边界 |
| Hello.World | 你好, 你好, 世界, 世界 | 标点符号用作单词边界 |
| _Hello123 | 你好,你好 | 删除前导或尾随数字或标点符号 |
| Hello2World | 你好, 你好, 世界, 世界 | 中间数字(类似于标点符号)用作单词边界 |
| btnWorld | 世界,世界 | 忽略长度不超过三个字符的片段 |
| helloworld | Helloworld、helloworld | 没有用于标识字边界的指示器 |
如果 Visual Studio 在所用的任一字典中找到令牌的匹配项,则令牌被视为可接受,扫描继续进行。 否则,令牌被视为拼写错误,Visual Studio 将其标记为拼写错误。
如何自定义拼写检查器
可以自定义拼写检查器,使其针对协作环境进行优化。 因此,Visual Studio 使用 EditorConfig 文件进行配置,以便你可以控制存储库中的拼写检查器行为。
通过配置 EditorConfig 文件,可以建立期望每个人都遵循的编码标准,这样就可以保持可能通过其他方法难以实现的编码一致性。
重要
拼写错误选项特定于文件。 您必须指定拼写选项应用于哪些文件。 在以下示例中,拼写选项应用于解决方案中的所有 C# 文件:
[*.cs]
下面是可以在 EditorConfig 文件中配置的开关的一些示例和用例方案:
列出要使用的 Visual Studio 语言。 在此示例中,Visual Studio 仅在检查拼写问题时使用“en-us”和“fr-fr”字典。
spelling_languages = _language_[,_language_]
(Example: = en-us,fr-fr)注释
请确保为正在使用的任何语言安装 语言包 ,以防止 Visual Studio 错误地将单词标记为拼写错误。
控制 Visual Studio 应检查的内容。 在此示例中,Visual Studio 将检查拼写错误的字词的标识符和注释,但不会在字符串内检查。
spelling_checkable_types = strings,identifiers,comments
(Example: = identifiers,comments)控制 Visual Studio 分配给错误列表中的拼写错误的严重性。 在此示例中,拼写错误显示为错误。
spelling_error_severity = error OR warning OR information OR hint
(Example: = error)创建自己的排除词典以指定你认为拼写正确的单词。 在此示例中,首次对解决方案中的任何文件运行拼写检查器时,Visual Studio 会检查排除.dic 文件。 Visual Studio 检查 C# 项目的 .sln 文件所在的同一目录,或在 C++ 项目的根目录中检查。 如果不存在 exclusion.dic 文件,Visual Studio 将创建一个。 然后,每当用户选择忽略某个单词时,Visual Studio 会将其添加到此 exclusion.dic 文件。 Visual Studio 会将此 exclusion.dic 文件中出现的任何单词视为拼写正确的单词。
spelling_exclusion_path = absolute OR relative path to exclusion dictionary
(Example: = .\exclusion.dic)注释
Visual Studio 使用 .editorconfig 文件中由
spelling_exclusion_path开关指定的排除字典,或者当未找到开关时,使用%localappdata%\Microsoft\VisualStudio\<Version>目录中的 exclusion.dic 文件。控制是否使用默认语言特定的排除词典。 默认情况下,此标志设置为 true。 添加到特定于语言的排除词典中的任何单词都将被视为拼写正确。 将其设置为 false 以忽略特定于 C++ 或 C# 的排除词典。
spelling_use_default_exclusion_dictionary = true OR false
(Example: = spelling_use_default_exclusion_dictionary = false)
下面是一个完整的示例:
[*.{cs,vb}] //specify which files the spelling options apply to
spelling_languages = en-us,fr-fr //specifies the en-us and fr-fr dictionaries for use in spell checking
spelling_checkable_types = identifiers,comments //specifies that identifiers and comments are the only checked elements
spelling_error_severity = error //sets severity assigned to spelling errors to error in the error list
spelling_exclusion_path = exclusion.dic //defines a custom exclusion dictionary location and file
spelling_use_default_exclusion_dictionary = false //ignores the language-specific default exclusion dictionary
特殊案例处理
在检查代码的拼写错误时,Visual Studio 具有一些独特的检查方式,这些方式不同于为书面文本设计的传统拼写检查器。 其中一些行为包括:
- 在包含标点符号(例如“misc.”)的字符串中,Visual Studio 不会建议更正,因为标识符中的标点符号可能会导致代码无法编译。
- 字符串中的反斜杠将省略后续字符进行拼写检查,并将反斜杠和后续字符视为单词分隔符。 例如,在字符串
hello\nworld中,Visual Studio 首先检测反斜杠。 Visual Studio 将\n视为单词分隔符,因此会将“hello”和“world”视为独立的部分,每个单独进行检查。 - 包含 URL 的字符串(例如
https://...或mailto:..)不会对整个字符串进行拼写检查。