Vim 会在我不希望的 XML 文件中进行拼写检查,并且只在那里

Vim 会在我不希望的 XML 文件中进行拼写检查,并且只在那里

我尝试在某些 XML 文档中使用 Vim 的内置拼写检查。只需加载 XML 语法即可实现这一点,如以下简单示例所示(它重现了我在大型 XML 文档中也看到的情况):

检查文本拼写,但不检查 xml

请注意,对于具有完全相同内容的两个缓冲区,当Filetype为 时text,拼写检查有效;当为 时xml,则无效。spell在两个缓冲区中都设置了 。

但是,从这个大型 XML 文档的前三行来看,您可以看到拼写检查肯定已打开:

对属性进行拼写检查

但它只是检查属性。

麻烦的是,它实际上找到的东西都没有拼写错误,而且它没有找到文档中大量的拼写错误。我希望它至少能找到文档正文中的拼写错误,并且能够关闭对属性的检查将是一个不错的选择。

@NoSpell我已经在文件中搜索过xml.vim,但没有返回任何结果。

答案1

这个 StackOverflow 问题包含部分答案,它打开了文档主体中的拼写检查。我将其放在初始化 XML 文件的自动命令部分中:

set spell
syntax spell toplevel
let &spellfile=$HOME . "/.xml." . &encoding . ".add"

第一个命令确保拼写正确。第二个命令是部分修复;第三个命令设置一个文件,例如/home/usr/.xml.utf-8.add用于保存添加到 UTF-8 XML 文件的拼写词典中的单词的文件。

因为我已经将此文件特定于 XML 文件,如果我不担心这xsl会在文档的其他地方出现实际的拼写错误,我可以将其添加到字典中等等;因此它可能是一个完整的答案。

但是,我找到了一种更好的方法来关闭属性的拼写检查:将@Spell与属性相关的更改xml.vim@NoSpell(这些行位于文件顶部附近):

syn region  xmlString contained start=+"+ end=+"+ contains=xmlEntity,@NoSpell display
syn region  xmlString contained start=+'+ end=+'+ contains=xmlEntity,@NoSpell display

这两组命令结合在一起提供了一个完整的解决方案。

固定的

相关内容