问题描述
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
要为cpp
和c
文件加载此文件,请将此行(自身)添加到文件~/.vim/after/syntax/c.vim
中,以便在C ++和C的系统语法文件之后加载。 (cpp
语法规则包括c
的所有语法,因此您也可以在cpp
上找到它。)
语法规则使用`
作为开始和结束定界符。
它使用contained
和containedin
仅匹配内部注释。 cComment
规则匹配传统的多行/* ... */
注释,cCommentL
匹配单行// ...
注释。 (两者都在Vim附带的C和C ++语法文件中定义。)
transparent
属性指示它不要将此语法规则用作突出显示组,因此,它将保留该规则匹配的部分中注释的常规突出显示。
最后,contains=@NoSpell
是在与此规则匹配的区域上禁用拼写的功能。有关拼写如何与语法突出显示一起工作的更多详细信息,请参见:help spell-syntax
。