Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vim 从语法集群中删除@Spell_Vim_Neovim - Fatal编程技术网

Vim 从语法集群中删除@Spell

Vim 从语法集群中删除@Spell,vim,neovim,Vim,Neovim,我正在使用插件。在JavaScript文件类型插件文件中,它将Vim配置为对字符串运行拼写检查。在浏览了插件的实现之后,我可以看到它对以下语法集群执行此操作: jsString jsTemplateString jsObjectKeyString jsObjectStringKey 集群的定义示例如下: syntax region jsString start=+\z(["']\)+ skip=+\\\%(\z1\|$\)+ end=+\z1+ end=+$+ c

我正在使用插件。在JavaScript文件类型插件文件中,它将Vim配置为对字符串运行拼写检查。在浏览了插件的实现之后,我可以看到它对以下语法集群执行此操作:

  • 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。