Vim 从语法集群中删除@Spell
我正在使用插件。在JavaScript文件类型插件文件中,它将Vim配置为对字符串运行拼写检查。在浏览了插件的实现之后,我可以看到它对以下语法集群执行此操作:Vim 从语法集群中删除@Spell,vim,neovim,Vim,Neovim,我正在使用插件。在JavaScript文件类型插件文件中,它将Vim配置为对字符串运行拼写检查。在浏览了插件的实现之后,我可以看到它对以下语法集群执行此操作: jsString jsTemplateString jsObjectKeyString jsObjectStringKey 集群的定义示例如下: syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ c
jsString
jsTemplateString
jsObjectKeyString
jsObjectStringKey
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 syntax highlighting组中删除拼写?这些不是真正的语法集群,只是语法项 虽然
@Spell
和@NoSpell
都是语法集群,但重要的是它们包含在哪里,而不是它们真正包含的项目,因此我们不能真正使用语法集群来修改它们并启用或拼写现有语法项目
因此,这里最好的办法是重新定义语法项,删除其中的@拼写部分
您只能重新定义这4个项目,但没有真正好的方法只修改命令的一部分(只需删除@Spell
部分),您最终必须从头开始重新设置它们,这意味着您必须从原始文件复制它们的定义,然后进行修改
要添加到现有语法文件,请参见
简而言之,您应该创建一个包含以下内容的~/.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
部分,因此它们不会为这些规则启用拼写检查。这就成功了!令人遗憾的是,没有一种简单的方法来修改@Spell
集群所在的位置。谢谢你的帮助,还有详细的答案!对于偶然发现这一点的其他人来说,我创建的文件是~/.config/nvim/after/syntax/javascript.vim
,因为我使用的是NeoVim。