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 检查的内容 | 为什么? |
---|---|---|
你好 | Hello, hello | 始终检查专有名词和普通名词 |
HelloWorld | Hello, hello, World, world | 中部大写用于标记字边界 |
Hello.World | Hello, hello, World, world | 标点用作字边界 |
_Hello123 | Hello, hello | 去除前导或尾随数字或标点符号 |
Hello2World | Hello, hello, World, world | 中部数字(如标点符号)用作字边界 |
btnWorld | World, world | 忽略三个或以下字符的片段 |
helloworld | Helloworld, helloworld | 没有用于标识单词边界的标记 |
如果 Visual Studio 在它使用的任何字典中找到令牌的匹配项,则认为令牌可以接受,并且会进行扫描。 否则,该令牌被视为拼写错误,Visual Studio 会将其标记为拼写错误。
如何自定义拼写检查器
可以自定义拼写检查器,使其针对协作环境进行优化。 因此,Visual Studio 使用 EditorConfig 文件进行配置,以便你可以控制存储库中的拼写检查器行为。
通过配置 EditorConfig 文件,可以建立你希望所有人都遵循的编码标准,这样就可以保持编码一致性,而其他方法实现这一点可能很难。
下面是可在 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 均会在与 .sln 文件相同的目录(对于 C# 项目)或在根目录(对于 C++ 目录)中检查是否存在 exclusion.dic 文件。 如果不存在 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”文件。
控制是否使用特定于语言的排除字典。 如果设置为 false,则不会使用特定于 C++ 或 C# 的排除字典中指定的任何字词。 默认值为 true。
spelling_use_default_exclusion_dictionary = true OR false (Example: = spelling_use_default_exclusion_dictionary = false)
特殊案例处理
Visual Studio 检查代码中拼写错误的方式有一些特殊行为,这些行为不同于为书面文本设计的传统拼写检查器。 其中一些行为包括:
1、在包含标点符号的字符串(例如“misc.”)中,Visual Studio 不会建议更正,因为标识符中的标点可能会导致代码无法编译。
2、字符串中的反斜杠将省略后续字符的拼写检查,并将反斜杠和后续字符视为单词分隔符。 例如,在字符串 hello\nworld 中,Visual Studio 首先检测反斜杠。 Visual Studio 将 \n 视为单词分隔符,这会留下“hello”和“world”,会分别对其进行检查。
3、包含 URL(如 https://... 或 mailto:..)的字符串不会对整个字符串进行拼写检查。