Project Icon

vscode-spell-checker

Visual Studio Code代码和文档拼写检查扩展

vscode-spell-checker是Visual Studio Code的拼写检查扩展,支持代码和文档拼写检查。该工具能有效识别常见拼写错误,同时保持较低的误报率。支持多种编程语言和文件类型,提供实时检查和建议功能。用户可自定义词典、忽略特定单词或区域。支持驼峰式命名检查,有助于提升代码质量和可读性。

Visual Studio Code 的拼写检查器

一个适用于代码和文档的基本拼写检查器。

这个拼写检查器的目标是帮助捕获常见的拼写错误,同时保持误报数量低。

支持进一步开发

  • GitHub 赞助商
  • Patreon
  • PayPal
  • Open Collective

功能

加载 TypeScript、JavaScript、文本等文件。字典文件中不存在的单词将有波浪下划线。

示例

示例

建议

示例

要查看建议列表:

将光标放在单词上后,以下任何操作都应显示建议列表:

  • 点击左侧边距的 💡 (灯泡)。
  • 快速修复 编辑器操作命令:
    • Mac: +.Cmd+.
    • PC: Ctrl+.

安装

打开 VS Code,按 F1 并输入 ext,选择安装并输入 code-spell-checker,按回车键并重新加载窗口以启用。

支持的语言

  • 英语(美国)
  • 英语(英国)- 通过将 "cSpell.language": "en" 改为 "cSpell.language": "en-GB" 启用

附加字典

语言字典

技术字典

  • 医学术语 - Code Spell Checker 的医学术语附加组件
  • 科学术语 - VS Code 的科学术语字典扩展。
  • Win32 - VS Code 的 Win32 字典扩展。

启用的文件类型

  • AsciiDoc
  • C, C++
  • C#
  • css, less, scss
  • Dart
  • Elixir
  • Go
  • Html
  • Java
  • JavaScript
  • JSON / JSONC
  • LaTeX
  • Markdown
  • PHP
  • PowerShell
  • Pug / Jade
  • Python
  • reStructuredText
  • Ruby
  • Rust
  • Scala
  • Text
  • TypeScript
  • YAML
  • SQL

启用 / 禁用文件类型

要启用或禁用某个文件类型的拼写检查:

  1. 点击状态栏中的拼写检查器状态:
拼写检查器状态栏
  1. 在信息界面上,点击复选框。
拼写检查器信息窗口

如何处理驼峰命名

概念很简单,在检查驼峰命名的单词之前,先将其拆分。

  • camelCase -> camel case
  • HTMLInput -> html input -- 注意 IInput 相关联,而不是与 HTML 相关联
  • snake_case_words -> snake case words
  • camel2snake -> camel snake -- (忽略数字 2)

全大写单词的特殊情况

有一些特殊情况可以帮助处理全大写单词的常见拼写实践。

尾部的 singiesesed 与前一个单词保持在一起。

  • CURLs -> curls -- 尾部的 s
  • CURLedRequest -> curled request -- 尾部的 ed

注意事项

  • 此拼写检查器不区分大小写。它无法捕获像 english 这样应为 English 的错误。
  • 拼写检查器使用本地词典。它不会向您的机器外发送任何内容。
  • 字典中的单词可能存在错误。
  • 有些单词可能缺失。
  • 只检查长度超过 3 个字符的单词。"jsj
  • cSpell:enable
  • spell-checker: enable
  • spellchecker: enable

JavaScript 示例

// cSpell:disable
const wackyWord = ['zaallano', 'wooorrdd', 'zzooommmmmmmm'];
/* cSpell:enable */

// 不支持嵌套的禁用/启用

// spell-checker:disable
// 现在已禁用。

var liep = 1;

/* cspell:disable */
// 仍然处于禁用状态

// cSpell:enable
// 现在已启用

const str = 'goededag'; // <- 将被标记为错误。

// spell-checker:enable <- 不起作用

// cSPELL:DISABLE <-- 同样有效。

// 如果没有 enable,拼写检查将在文件末尾之前一直保持禁用状态。
const str = 'goedemorgen'; // <- 不会被标记为错误。

Markdown 示例

<!--- cSpell:disable --->

此文本不会被检查。

<!--- cSpell:enable --->

此文本会被检查。

忽略

忽略允许您指定文档中要忽略的单词列表。

// cSpell:ignore zaallano, wooorrdd
// cSpell:ignore zzooommmmmmmm
const wackyWord = ['zaallano', 'wooorrdd', 'zzooommmmmmmm'];

**注意:**用 ignore 定义的单词将在整个文件中被忽略。

单词

单词列表允许您添加被视为正确并将用作建议的单词。

// cSpell:words woorxs sweeetbeat
const companyName = 'woorxs sweeetbeat';

**注意:**用 words 定义的单词将在整个文件中使用。

启用/禁用复合词

在某些编程语言中,将单词粘合在一起是很常见的。

// cSpell:enableCompoundWords
char * errormessage;  // 使用 cSpell:enableCompoundWords 后是可以的
int    errornumber;   // 也是可以的。

**注意:**复合词检查无法在同一文件中开启/关闭。 文件中的最后一个设置决定了整个文件的值。

排除和包含要检查的文本

默认情况下,整个文档都会进行拼写检查。 上面的 cSpell:disable/cSpell:enable 允许您屏蔽文档的某些部分。 ignoreRegExpincludeRegExp 让您能够忽略或包含文本模式。 如果没有给出标志,默认会添加 gim 标志。

拼写检查器按以下方式工作:

  1. 查找所有匹配 includeRegExp 的文本
  2. 移除任何匹配 excludeRegExp 的文本
  3. 检查剩余的文本。

排除示例

// cSpell:ignoreRegExp 0x[0-9a-f]+     -- 将忽略 C 风格的十六进制数
// cSpell:ignoreRegExp /0x[0-9A-F]+/g  -- 将忽略大写的 C 风格十六进制数。
// cSpell:ignoreRegExp g{5} h{5}       -- 只会匹配 ggggg,但不会匹配 hhhhh 或 'ggggg hhhhh'
// cSpell:ignoreRegExp g{5}|h{5}       -- 会匹配 ggggg 和 hhhhh
// cSpell:ignoreRegExp /g{5} h{5}/     -- 会匹配 'ggggg hhhhh'
/* cSpell:ignoreRegExp /n{5}/          -- 由于结束注释的原因,不会按预期工作 -> */
/*
   cSpell:ignoreRegExp /q{5}/          -- 会正常匹配 qqqqq,但不会匹配 QQQQQ
*/
// cSpell:ignoreRegExp /[^\s]{40,}/    -- 将忽略没有空格的长字符串。
// cSpell:ignoreRegExp Email           -- 这将忽略类似电子邮件的模式 -- 参见预定义的正则表达式
var encodedImage = 'HR+cPzr7XGAOJNurPL0G8I2kU0UhKcqFssoKvFTR7z0T3VJfK37vS025uKroHfJ9nA6WWbHZ/ASn...';
var email1 = 'emailaddress@myfancynewcompany.com';
var email2 = '<emailaddress@myfancynewcompany.com>';

**注意:**ignoreRegExp 和 includeRegExp 适用于整个文件。它们不会启动和停止。

包含示例

通常你不需要使用 includeRegExp。但如果你在混合使用不同的语言,它可能会很有帮助。

# cSpell:includeRegExp #.*
# cSpell:includeRegExp /(["]{3}|[']{3})[^\1]*?\1/g
# 只有注释和块字符串会被检查拼写。
def sum_it(self, seq):
    """这会被检查拼写"""
    variabele = 0
    alinea = '这不会被检查'
    for num in seq:
        # 'value' 的本地状态会在迭代之间保留
        variabele += num
        yield variabele

预定义的正则表达式

排除模式

  • Urls1 -- 匹配 URL
  • HexValues -- 匹配常见的十六进制格式,如 #aaa0xfeef\u0134
  • EscapeCharacters1 -- 匹配特殊字符:\n\t
  • Base641 -- 匹配长度超过 40 个字符的 base64 文本块。
  • Email -- 匹配大多数电子邮件地址。

包含模式

  • Everything1 -- 默认情况下,我们匹配整个文档并移除排除项。
  • string -- 这匹配常见的字符串格式,如 '...'、"..." 和 `...`
  • CStyleComment -- 这些是 C 风格的注释 /* */ 和 //
  • PhpHereDoc -- 这匹配 PHPHereDoc 字符串。

1. 这些模式是每个文件默认包含/排除列表的一部分。

自定义

拼写检查器配置可以通过 VS Code 首选项或 cspell.json 配置文件控制。

优先顺序:

  1. 工作区文件夹 cspell.json
  2. 工作区文件夹 .vscode/cspell.json
  3. VS Code 首选项 cSpell 部分。

将单词添加到工作区字典

你可以选择将自己的单词添加到工作区字典中。最简单的方法是将光标放在你想要添加的单词上,当灯泡出现时,按 Ctrl+.(Windows)/ Cmd+.(Mac)。你会看到建议列表和添加单词的选项。

你也可以输入想要添加到字典的单词:F1 add word -- 选择 Add Word to Dictionary 并输入你想添加的单词。

cspell.json

添加到字典的单词会被放置在 工作区 文件夹的 cspell.json 文件中。 注意,cspell.json 中的设置会覆盖 VS Code 的 settings.json 中的等效 cSpell 设置。

示例 cspell.json 文件

// cSpell 设置
{
    // 设置文件的版本。始终为 0.2
    "version": "0.2",
    // language - 当前活动的拼写语言
    "language": "en",
    // words - 始终被视为正确的单词列表
    "words": [
        "mkdirp",
        "tsmerge",
        "githubusercontent",
        "streetsidesoftware",
        "vsmarketplacebadge",
        "visualstudio"
    ],
    // flagWords - 始终被视为不正确的单词列表
    // 这对于侮辱性词语和常见的拼写错误很有用。
    // 例如 "hte" 应该是 "the"
    "flagWords": [
        "hte"
    ]
}

VS Code 配置设置

    //-------- Code Spell Checker 配置 --------
    // 拼写检查时使用的语言区域。默认支持 "en"、"en-US" 和 "en-GB"。
    "cSpell.language": "en",

    // 控制每个文档的最大拼写错误数。
    "cSpell.maxNumberOfProblems": 100,

    // 控制显示的建议数量。
    "cSpell.numSuggestions": 8,

    // 在与字典比对之前,单词的最小长度。
    "cSpell.minWordLength": 4,

    // 指定要进行拼写检查的文件类型。
    "cSpell.enabledLanguageIds": [
        "csharp",
        "go",
        "javascript",
        "javascriptreact",
        "markdown",
        "php",
        "plaintext",
        "typescript",
        "typescriptreact",
        "yml",
        "sql"
    ],

    // 启用/禁用拼写检查器。
    "cSpell.enabled": true,

    // 在状态栏上显示拼写检查器状态。
    "cSpell.showStatus": true,

    // 为工作区添加到字典的单词。
    "cSpell.words": [],

    // 启用/禁用复合词,如 'errormessage'
    "cSpell.allowCompoundWords": false,

    // 要忽略且不建议的单词。
    "cSpell.ignoreWords": ["behaviour"],

    // 要添加到字典的用户单词。应该只在用户设置中。
    "cSpell.userWords": [],

    // 指定要忽略的路径/文件。
    "cSpell.ignorePaths": [
        "node_modules",        // 这将忽略 node_modules 目录中的任何内容
        "**/node_modules",     // 与上面相同
        "**/node_modules/**",  // 与上面相同
        "node_modules/**",     // 由于当前工作目录的确定方式,目前不起作用。
        "vscode-extension",    //
        ".git",                // 忽略 .git 目录
        "*.dll",               // 忽略所有 .dll 文件。
        "**/*.dll"             // 忽略所有 .dll 文件
    ],

    // flagWords - 始终被视为不正确的单词列表
    // 这对于侮辱性词语和常见的拼写错误很有用。
    // 例如 "hte" 应该是 "the"`
    "cSpell.flagWords": ["hte"],

    // 设置文档拼写检查的延迟时间。默认为 50。
    "cSpell.spellCheckDelayMs": 50,

    // 设置诊断报告级别
    //   Error - 将拼写问题报告为错误
    //   Warning - 将拼写问题报告为警告
    //   Information - 将拼写问题报告为信息(默认)
    //   Hint - 将拼写问题报告为提示,不会在问题面板中显示
    "cSpell.diagnosticLevel": "Information",

字典

拼写检查器包含一组默认字典。

通用字典

  • wordsEn - 源自 Hunspell 美式英语单词。
  • wordsEnGb - 源自 Hunspell 英式英语单词。
  • companies - 知名公司列表
  • softwareTerms - 软件术语和概念,如 "coroutine"、"debounce"、"tree" 等。
  • misc - 不属于其他字典的术语。

编程语言字典

  • typescript - Typescript 和 Javascript 的关键字
  • node - 与使用 nodejs 相关的术语。
  • php - php 关键字和库方法
  • go - go 关键字和库方法
  • python - python 关键字
  • powershell - powershell 关键字
  • html - html 相关关键字
  • css - csslessscss 相关关键字

杂项字典

  • fonts - 长字体列表 - 用于辅助 css

根据编程语言,将加载不同的字典。

以下是一些默认规则:

  • "*" 匹配任何编程语言/文件类型。
  • "locale" 用于根据 "cSpell.language" 设置进行过滤。
{
"cSpell.languageSettings": [
  { "languageId": '*',      "locale": 'en',    "dictionaries": ['wordsEn'] },
  { "languageId": '*',      "locale": 'en-US', "dictionaries": ['wordsEn'] },
  { "languageId": '*',      "locale": 'en-GB', "dictionaries": ['wordsEnGb'] },
  { "languageId": '*',                         "dictionaries": ['companies', 'softwareTerms', 'misc'] },
  { "languageId": "python",                    "dictionaries": ["python"]},
  { "languageId": "go",                        "dictionaries
/**
 * @title 字典文本文件路径
 * 定义字典文本文件的路径。
 *
 *
 * **注意:** 如果路径是 `undefined`,则期望在 `dictionaryDefinitions` 中找到 `name` 指定的字典。
 *
 *
 * 文件格式: 文件中的每一行都被视为一个字典条目。
 * 保留大小写,同时去除首尾空格。
 * 路径应该是绝对路径,或相对于工作区的路径。
 *
 * **示例:** 相对于用户文件夹
 *
 * ```
 * ~/dictionaries/custom_dictionary.txt
 * ```
 *
 * **示例:** 在多根工作区中相对于 `client` 文件夹
 *
 * ```
 * ${workspaceFolder:client}/build/custom_dictionary.txt
 * ```
 *
 * **示例:** 在单根工作区中相对于当前工作区文件夹
 *
 * **注意:** 在多根工作区中可能不会如预期工作,因为它基于当前打开文件的相对工作区。
 *
 * ```
 * ${workspaceFolder}/build/custom_dictionary.txt
 * ```
 *
 * **示例:** 在单根工作区或多根工作区的第一个文件夹中相对于工作区文件夹
 *
 * ```
 * ./build/custom_dictionary.txt
 * ```
 */
path?: FsPath;

/**
 * @title 向字典添加单词
 * 指示是否应使用此自定义字典来存储添加的单词。
 * @default true
 */
addWords?: boolean;

/**
 * @title 字典范围
 * 选项包括
 * - `user` - 适用于所有项目和工作区的单词
 * - `workspace` - 适用于整个工作区的单词
 * - `folder` - 仅适用于工作区文件夹的单词
 */
scope?: CustomDictionaryScope | CustomDictionaryScope[];
}

全局字典

要添加全局字典,您需要更改用户设置。

定义字典

在用户设置中,您需要告诉拼写检查器在哪里找到您的单词列表。

示例添加医学术语,以便可以找到像 acanthopterygious 这样的单词。

VS Code 设置

"cSpell.customDictionaries": {
  "myWords": {
    "name": "myWords",
    "path": "~/my-words.txt",
    "scope": "user",
    "addWords": true
  }
}

解释: 在此示例中,我们告诉拼写检查器在哪里找到我们名为 myWords 的个人字典。

  • name - 这是字典的名称,所有对该字典的引用都通过名称进行。
  • path - 这是字典文件的路径。由于它在用户设置中,我们必须使用绝对路径或使用 ~/ 相对于用户目录的路径。
  • scope - (可选) 用于将字典"范围"限定为 userworkspacefolder。范围用于帮助传达字典的预期用途。
  • addWords - (可选) 默认值 - true - 用于显示/隐藏字典作为添加单词的可能目标。

使用 cspell.json 的项目 / 工作区字典

要在项目级别添加字典,应在 cspell.json 文件中定义,以便可以与 cspell 命令行工具一起使用。 此文件可以位于项目根目录或 .vscode 目录中。

示例添加医学术语,其中术语被签入项目,我们只想将其用于 .md 文件。

{
    "dictionaryDefinitions": [
        { "name": "medicalTerms", "path": "./dictionaries/medicalterms-en.txt"},
        { "name": "cities", "path": "./dictionaries/cities.txt"}
    ],
    "dictionaries": [
        "cities"
    ],
    "languageSettings": [
        { "languageId": "markdown", "dictionaries": ["medicalTerms"] },
        { "languageId": "plaintext", "dictionaries": ["medicalTerms"] }
    ]
}

解释: 在此示例中,定义了两个字典:citiesmedicalTerms。 路径相对于 cSpell.json 文件的位置。这允许将字典签入项目。

cities 字典用于每种文件类型,因为它被添加到 dictionaries 列表中。 medicalTerms 字典仅在编辑 markdownplaintext 文件时使用。

DictionaryDefinition

interface DictionaryDefinition {
    /**
     * 这是字典的名称。
     *
     * 名称格式:
     * - 必须包含至少 1 个数字或字母。
     * - 允许使用空格。
     * - 将删除前导和尾随空格。
     * - 名称区分大小写。
     * - 不得包含 `*`, `!`, `;`, `,`, `{`, `}`, `[`, `]`, `~`。
     */
    name: DictionaryId;
    /** 可选描述。 */
    description?: string;
    /** 自定义字典文本文件的路径。 */
    path: CustomDictionaryPath;
    /**
     * 定义将单词添加到字典时的范围。
     * 范围值: `user`, `workspace`, `folder`。
     */
    scope?: CustomDictionaryScope | CustomDictionaryScope[];
    /**
     * 当为 `true` 时,让拼写检查器知道可以将单词添加到此字典。
     */
    addWords: boolean;
}

使用 VS Code 设置的项目 / 工作区字典

VS Code 设置

"cSpell.customDictionaries": {
  "project-words": {
    "name": "project-words",
    "path": "${workspaceRoot}/project-words.txt",
    "description": "Words used in this project",
    "addWords": true
  },
  "medicalTerms": {
    "name": "medicalTerms",
    "path": "/Users/guest/projects/cSpell-WordLists/dictionaries/medicalterms-en.txt",
    "addWords": false // 不向此字典添加单词
  },
  "companyTerms": {
    "name": "companyTerms",
    "path": "${workspaceFolder}/../company/terms.txt"
    // "addWords": true -- 隐含
  },
  "custom": true, // 启用 `custom` 字典
  "internal-terms": false // 禁用 `internal-terms` 字典
}

常见问题

参见: 常见问题



Street Side Software Logo Street Side Software 为您提供

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号