如何使用Vim的“智能引号”进行拼写检查


11

有“常规”直引号:

并且您有一个成角度的“智能引号”:
''“”

Vim的拼写检查使用“直”引号,但不能使用天使引号,因此这被认为是“错误”:
这是... Monty Python的

即使不是。

屏幕截图,以防您的字体没有区别:

在此处输入图片说明

我该如何解决?我希望让它同时适用于两种变体。

Answers:


7
$ 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已经排序。)


为什么要's用作图案?不仅仅是在寻找'正确的答案吗?这将错过有一个词' 在不同的位置(如you'dyou've等)
马丁Tournoij

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

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

如果您选择走这:mkspell!条路线,则可能还需要过滤掉不相关区域的单词。
亚伦·梅西

1

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

根据本文步骤:

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

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

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

  3. 解压缩文件:

    unzip -x hunspell-en_US-2017.01.22.zip
    

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

  4. 启动VIM(在~/.vim/spell目录中),然后在VIM中执行以下命令::mkspell! en en_US

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

  5. 退出VIM,然后检查当前目录中的文件。应该en.utf-8.spl创建了文件。

  6. 做完了!

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.