从语法簇中删除@Spell
Remove @Spell from a syntax cluster
我正在使用 vim-polyglot 插件。在 JavaScript 文件类型插件文件中,它配置 Vim 到 运行 字符串拼写检查。在浏览了插件的实现后,我可以看到它针对以下语法集群执行此操作:
jsString
jsTemplateString
jsObjectKeyString
jsObjectStringKey
Here's集群定义示例:
syntax region jsString start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial,@Spell extend
我尝试将下面的行添加到 ~/.config/nvim/init.vim
以及 ~/.config.nvim/ftplugins/javascript.vim
,但似乎都没有删除拼写:
syntax cluster jsString remove=@Spell
syntax cluster jsTemplateString remove=@Spell
syntax cluster jsObjectKeyString remove=@Spell
syntax cluster jsObjectStringKey remove=@Spell
如何从 vim-polyglot 提供的 select 语法高亮组中删除拼写?
这些并不是真正的语法 clusters,而只是语法 items.
虽然 @Spell
和 @NoSpell
是 语法簇,但重要的是它们包含的位置而不是它们包含的真正项目,因此我们可以'真正使用 syntax cluster
来修改那些并为现有语法项启用或拼写...
所以最好的办法是重新定义语法项,删除其中的 @Spell
部分。
您只能重新定义这 4 项,但没有真正好的方法可以只修改部分命令(只需删除 @Spell
部分),您最终不得不从头开始重新设置它们,这意味着您必须从原始文件中复制它们的定义,然后进行修改。
要添加到现有语法文件,请参阅 :help mysyntaxfile-add
。
简而言之,您应该创建一个 ~/.vim/after/syntax/javascript.vim
,其内容为:
syntax clear jsString
syntax clear jsTemplateString
syntax clear jsObjectKeyString
syntax clear jsObjectStringKey
syntax region jsString start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend
syntax region jsTemplateString start=+`+ skip=+\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend
syntax region jsObjectKeyString contained start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial skipwhite skipempty nextgroup=jsObjectValue
syntax region jsObjectStringKey contained start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
这些命令将首先清除语法项,然后重新定义它们,但这次不包括 contains=@Spell
部分,因此它们不会为这些规则启用拼写检查。
我正在使用 vim-polyglot 插件。在 JavaScript 文件类型插件文件中,它配置 Vim 到 运行 字符串拼写检查。在浏览了插件的实现后,我可以看到它针对以下语法集群执行此操作:
jsString
jsTemplateString
jsObjectKeyString
jsObjectStringKey
Here's集群定义示例:
syntax region jsString start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial,@Spell extend
我尝试将下面的行添加到 ~/.config/nvim/init.vim
以及 ~/.config.nvim/ftplugins/javascript.vim
,但似乎都没有删除拼写:
syntax cluster jsString remove=@Spell
syntax cluster jsTemplateString remove=@Spell
syntax cluster jsObjectKeyString remove=@Spell
syntax cluster jsObjectStringKey remove=@Spell
如何从 vim-polyglot 提供的 select 语法高亮组中删除拼写?
这些并不是真正的语法 clusters,而只是语法 items.
虽然 @Spell
和 @NoSpell
是 语法簇,但重要的是它们包含的位置而不是它们包含的真正项目,因此我们可以'真正使用 syntax cluster
来修改那些并为现有语法项启用或拼写...
所以最好的办法是重新定义语法项,删除其中的 @Spell
部分。
您只能重新定义这 4 项,但没有真正好的方法可以只修改部分命令(只需删除 @Spell
部分),您最终不得不从头开始重新设置它们,这意味着您必须从原始文件中复制它们的定义,然后进行修改。
要添加到现有语法文件,请参阅 :help mysyntaxfile-add
。
简而言之,您应该创建一个 ~/.vim/after/syntax/javascript.vim
,其内容为:
syntax clear jsString
syntax clear jsTemplateString
syntax clear jsObjectKeyString
syntax clear jsObjectStringKey
syntax region jsString start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1+ end=+$+ contains=jsSpecial extend
syntax region jsTemplateString start=+`+ skip=+\`+ end=+`+ contains=jsTemplateExpression,jsSpecial extend
syntax region jsObjectKeyString contained start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial skipwhite skipempty nextgroup=jsObjectValue
syntax region jsObjectStringKey contained start=+\z(["']\)+ skip=+\\%(\z1\|$\)+ end=+\z1\|$+ contains=jsSpecial extend skipwhite skipempty nextgroup=jsFuncArgs,jsObjectValue
这些命令将首先清除语法项,然后重新定义它们,但这次不包括 contains=@Spell
部分,因此它们不会为这些规则启用拼写检查。