有“普通”直引号:
'“

,还有成角度的“智能引号”:
''“”

Vim spellcheck使用“直”引号而不是天使引号,因此这被认为是“错误”:
... Monty Python的

,即使不是。 />截图,以防您的字体没有显示出差异:



如何解决此问题?我希望使它同时适用于两种变体(而且是)。

#1 楼

$ grep "'" /usr/share/dict/words | wc -l
26226
$ grep -i python /usr/share/dict/words
Python
Python's
python
python's
pythons


问题是所有带有撇号的单词实际上都在字典文件中。
因此,如果您可以修改vim拼写字典,请这样做:

$ grep "'" /usr/share/dict/words | sed "s/'/’/g" >> ~/.vim/spell/en.utf-8.add


这将



grep查找系统词典中所有包含撇号的单词(');

sed将直引号更改为智能引号(即s/'/’/g,其中第一个引号是直引号,第二个引号是智能引号);并
将其附加到您的语言词典中(替换为您所用的语言)。

您需要将其重新编译为.spl文件,您可以从Vim中进行操作:

:mkspell! ~/.vim/spell/en.utf-8.add


如果要使用Vim用作起始位置的实际拼写文件(而不是系统词典),可以使用:spelldump命令。
输出将包括Vim用于当前spelllang的所有单词,包括已经从.add文件添加的单词。
:spelldump的结果保存到文件中并删除前两行(标题信息),然后使用与
您可能还希望通过uniq对其进行管道传输,以删除重复的条目。
(无需sort:spelldump的输出已经排序。)

评论


为什么将用作模式?不仅在搜索'正确,正确吗?这会漏掉在其他位置带有'的单词(例如,您想要的,等等)。

–马丁·图尔诺伊(Martin Tournoij)
2015年2月5日在17:44



是的,你是对的。我已经编辑了答案。

– wchargin
2015年2月5日,19:52

谢谢:-)我不确定您是否这样做是有原因的,所以犹豫自己编辑它...

–马丁·图尔诺伊(Martin Tournoij)
2015年2月5日在20:01

如果您选择:mkspell!路线,您可能还希望过滤掉不相关区域的单词。

–亚伦·梅西(Aaron Massey)
15年4月19日在22:57

#2 楼

到目前为止,您只需为VIM下载并编译新的拼写文件即可。 Unicode引号已添加到英语词典的当前版本中。

基于本文的步骤:


创建目录~/.vim/spell并进行更改。 (该路径是VIM的runtimepath的一部分。)

对于英语,可以在此处下载该词典。 (或者:从LibreOffice存储库中-您同时需要.dic.aff文件。)

N.B.为了获得更好的结果,我建议同时获取en_US和en_GB。可以在LibreOffice存储库中找到en_GB词典。


解压缩文件:

unzip -x hunspell-en_US-2017.01.22.zip


档案必须至少包含以下内容:文件:en_US.affen_US.dic


启动VIM(在~/.vim/spell目录中)并在VIM中执行命令::mkspell! en en_US

或者如果您还下载了en_GB文件::mkspell! en en_US en_GB

退出VIM,并检查当前目录中的文件。现在应该已经创建了文件en.utf-8.spl
完成!

现在,在启动VIM并激活英语拼写检查之后,它应该首先从.spl中选择新创建的~/.vim/spell文件。包含对Unicode引号的支持。至少对我来说是有效的。