【问题标题】:How to exclude capitalized words from spell checking in Vim?如何从 Vim 中的拼写检查中排除大写单词?
【发布时间】:2013-08-14 07:40:43
【问题描述】:

要添加到字典中的首字母缩写词和专有名词太多。我希望将任何包含大写字母的单词排除在拼写检查之外。单词由空格或特殊字符(即非字母字符)分隔。这可能吗?

当小写字母和特殊字符包围大写单词时,答案的第一部分失败:

,jQuery,
, iPad,
/demoMRdogood/
[CSS](css)
`appendTo()`,

当小写单词由特殊字符分隔时,当前答案会给出误报(从拼写检查中排除)。以下是示例:

(async)
leetcode, eulerproject, 

赏金是给解决这个问题的人。

【问题讨论】:

  • 你能举例说明什么是大写单词吗?因为您似乎不喜欢已经给出的答案。它做你想做的事。 (即所有以大写字母开头的单词)或至少第一个单词。
  • 好的,我稍微改了一下问题。我已经包含了当前答案失败的情况。
  • 第一个有什么问题? :syn match myExCapitalWords +\<[A-Z]\w*\>+ contains=@NoSpell这表示所有这些都拼错了。
  • 我添加了第一个失败的情况。抱歉,我知道我似乎在吹毛求疵,但我想要一个完美的解决方案。我会添加更多案例。

标签: vim spell-checking


【解决方案1】:

你可以试试这个命令:

:syn match myExCapitalWords +\<[A-Z]\w*\>+ contains=@NoSpell

上述命令指示 Vim 将 \&lt;[A-Z]\w*\&gt; 描述的每个模式作为 @NoSpell 集群的一部分来处理。 @NoSpell 集群中的项目不进行拼写检查。

如果您还想从拼写检查中排除所有包含至少一个非字母字符的单词,您可以调用以下命令:

:syn match myExNonWords +\<\p*[^A-Za-z \t]\p*\>+ contains=@NoSpell

输入:h spell-syntax了解更多信息。

【讨论】:

  • 这几乎对我有用。如果单词之前或之后有非字母字符,拼写检查仍然会启动。我尝试在之前和之后为非字母字符设置条件,但它没有像我预期的那样工作。如果我去掉“词的开头”或“词的结尾”标记,则匹配根本不起作用。
  • 是否可以扩展它以使句子开头的单词不匹配?我试过+\v(\. )@!&lt;\u\w*&gt;+,但没有用。
【解决方案2】:

这是对我有用的解决方案。这通过了我在问题中提到的案例:

syn match myExCapitalWords +\<\w*[A-Z]\K*\>+ contains=@NoSpell

这是使用\S 而不是\K 的替代解决方案。替代解决方案不包括括号中且前面有大写字母的字符。由于它更宽松,因此更适用于 URL:

syn match myExCapitalWords +\<\w*[A-Z]\S*\>+ contains=@NoSpell

从拼写检查中排除“'s”

s 在撇号后被认为是拼写错误的字母,无论上述解决方案如何。一个快速的解决方案是将s 添加到您的字典中或为此添加一个案例:

syn match myExCapitalWords +\<\w*[A-Z]\K*\>\|'s+ contains=@NoSpell

这不是问题的一部分,但这是拼写检查过程的常见情况,所以我在这里提到了。

【讨论】:

  • 如果我在 .c 文件中使用它,那么它会删除字符串的颜色编码,即,通常,字符串在 C 代码中以不同的方式突出显示,如果我使用上面的 vim 命令,那么它删除了代码颜色编码!。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-21
  • 1970-01-01
  • 2010-11-19
  • 2021-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多