我们可以在注释部分中转义类型,代码等吗,以便拼写检查不会将它们视为错字

问题描述

Vim仅在注释部分支持拼写检查,但是,如果我有类型名称或非常规词,它将被视为错字。例如,在下面的示例中,std::endl将突出显示为错字。

// Don't use std::endl,it will flush unnecessarily

我希望我们可以像下面这样使用``来使它们逃脱。

// Don't use `std::endl`,it will flush unnecessarily

除了将所有内容添加到字典之外,还有其他提示解决方案吗?

我真的不想因此禁用拼写检查,因此非常感谢您的帮助。

谢谢!

解决方法

您可以使用以下语法规则来创建与`...`块匹配的新组,并在这些块中禁用拼写:

syntax region cCommentNoSpell start=+`+ end=+`+
    \ contained containedin=cComment,cCommentL transparent
    \ contains=@NoSpell

要为cppc文件加载此文件,请将此行(自身)添加到文件~/.vim/after/syntax/c.vim中,以便在C ++和C的系统语法文件之后加载。 (cpp语法规则包括c的所有语法,因此您也可以在cpp上找到它。)

语法规则使用`作为开始和结束定界符。

它使用containedcontainedin仅匹配内部注释。 cComment规则匹配传统的多行/* ... */注释,cCommentL匹配单行// ...注释。 (两者都在Vim附带的C和C ++语法文件中定义。)

transparent属性指示它不要将此语法规则用作突出显示组,因此,它将保留该规则匹配的部分中注释的常规突出显示。

最后,contains=@NoSpell是在与此规则匹配的区域上禁用拼写的功能。有关拼写如何与语法突出显示一起工作的更多详细信息,请参见:help spell-syntax