我喜欢vim 7.0支持拼写检查:set spell,我喜欢它默认只检查我的C代码中的注释和文本字符串.但我想找到一种方法来改变行为,以便vim知道当我写下包含下划线的单词时,我不希望检查单词拼写.
问题是我经常在我的评论中引用变量或函数名称,所以现在vim认为每个不完整正确单词的文本都是拼写错误.例如.
/* The variable proj_abc_ptr is used in function do_func_stuff' */
大多数情况下,由下划线分隔的部分是完整的单词,但有时它们是我不希望添加到单词列表中的缩写.是否有任何全局方式告诉vim在拼写检查时将_作为单词的一部分?
以下是一些更通用的拼写检查异常规则,可放入.vim/after/syntax/{LANG}.vim文件中:
" Disable spell-checking of bizarre words:
" - Mixed alpha / numeric
" - Mixed case (starting upper) / All upper
" - Mixed case (starting lower)
" - Contains strange character
syn match spellingException "\<\w*\d[\d\w]*\>" transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\<\(\u\l*\)\{2,}\>" transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\<\(\l\+\u\+\)\+\l*\>" transparent contained containedin=pythonComment,python.*String contains=@NoSpell
syn match spellingException "\S*[/\\_`]\S*" transparent contained containedin=pythonComment,python.*String contains=@NoSpell
Run Code Online (Sandbox Code Playgroud)
改变pythonComment,python.*String你的语言。
transparent 意味着匹配从包含块继承其突出显示属性(即这些规则不会改变文本的显示方式)。contained防止这些匹配超出包含块(最后一条规则的结尾\S*可能匹配超过块的末尾)containedin 包含要添加这些新规则的现有语法组的列表。contains=@NoSpell 覆盖任何和所有继承的组,从而告诉拼写检查器跳过匹配的文本。您需要将其移至其自己的组中。像这样的东西:
hi link cCommentUnderscore cComment
syn match cCommentUnderscore display '\k\+_\w\+'
syn cluster cCommentGroup add=cCommentUnderscore
Run Code Online (Sandbox Code Playgroud)
在某些荧光笔中,您可能需要contains=@NoSpell在匹配线的末尾,但在 C 中,默认值为@NoSpell,所以应该可以这样。
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |