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拼写中的单词识别?_Vim_Spell Checking - Fatal编程技术网

如何更改vim拼写中的单词识别?

如何更改vim拼写中的单词识别?,vim,spell-checking,Vim,Spell Checking,我喜欢Vim7.0通过:setSpell支持拼写检查,并且我喜欢它在默认情况下只检查我的C代码中的注释和文本字符串。但是我想找到一种改变行为的方法,这样vim就会知道,当我写含有下划线的单词时,我不想检查这个单词的拼写 问题是我经常在注释中引用变量或函数名,所以现在vim认为每一段不是完全正确的单词的文本都是拼写错误。例如 /*变量proj_abc_ptr用于函数do_func_stuff'*/ 大多数时候,用下划线分隔的部分是完整的单词,但其他时候它们是缩写,我不想添加到单词列表中。在拼写检查

我喜欢Vim7.0通过:setSpell支持拼写检查,并且我喜欢它在默认情况下只检查我的C代码中的注释和文本字符串。但是我想找到一种改变行为的方法,这样vim就会知道,当我写含有下划线的单词时,我不想检查这个单词的拼写

问题是我经常在注释中引用变量或函数名,所以现在vim认为每一段不是完全正确的单词的文本都是拼写错误。例如

/*变量proj_abc_ptr用于函数do_func_stuff'*/


大多数时候,用下划线分隔的部分是完整的单词,但其他时候它们是缩写,我不想添加到单词列表中。在拼写检查时,是否有任何全局方法可以告诉vim将s作为单词的一部分?

您需要将其移动到自己的组中。大概是这样的:

hi link cCommentUnderscore cComment
syn match cCommentUnderscore display '\k\+_\w\+'
syn cluster cCommentGroup add=cCommentUnderscore

在某些高亮显示程序中,您可能需要在匹配线的末尾添加
contains=@NoSpell
,但在C中,默认值是
@NoSpell
,因此应该可以这样做。

以下是一些更通用的拼写检查异常规则,可以放在
.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
“禁用奇怪单词的拼写检查:
“-字母/数字混合
“-混合箱(起始上部)/所有上部
“-混合情况(从下开始)
“-包含奇怪的字符
syn match spellingException“\”transparent containedin=pythonComment,python.*字符串contains=@NoSpell
syn match spellingException“\”transparent containedin=pythonComment,python.*字符串contains=@NoSpell
syn match spellingException“\”transparent containedin=pythonComment,python.*字符串contains=@NoSpell
syn match spellingException“\S*[/\\\\\\\\\`]\S*”透明包含的containedin=pythonComment,python.*字符串包含=@NoSpell
为您的语言更改
pythonComment,python.*String

  • transparent
    表示匹配从包含块继承其突出显示属性(即,这些规则不会更改文本的显示方式)
  • contained
    阻止这些匹配扩展到包含块之外(最后一条规则以
    \S*
    结尾,这可能会匹配到块的末尾)
  • containedin
    保存现有语法组的列表,以添加这些新规则
  • contains=@NoSpell
    覆盖任何和所有继承的组,从而告诉拼写检查器跳过匹配的文本

效果很好!非常感谢。我将添加一条注释:我最初尝试将其放在.vimrc中,但没有任何作用。在查看了:syn帮助后,我发现要在每次加载C语法时使用此语法突出显示更改,我需要将这些行放在~/.vim/After/syntax/C.vim文件.a中在我这样做之后,一切都很顺利。在使用了这一更改一段时间后,我做了两个改进。第一,不要在单词的开头或结尾用u’s拼写检查单词。第二,不要让每个单词中都有一个u’按注释着色。新的一行是:“syn match ccommentunderline display'\uk\+\\\\\uw*”