Как я могу использовать проверку правописания Vim с «умными цитатами»

11

Есть "нормальные" прямые кавычки:
'"

И у вас есть угловые «умные цитаты»:
«»

Проверка орфографии Vim работает с «прямыми» кавычками, но не с ангельскими кавычками, так что это считается «неправильным»:
это ... Монти Пайтон

Хотя это не так.

Снимок экрана, если ваш шрифт не показывает разницу:

введите описание изображения здесь

Как это исправить? Я бы предпочел, чтобы это работало для обоих вариантов (это и есть).

Мартин Турной
источник

Ответы:

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уже отсортирован.)

wchargin
источник
Почему вы используете 'sв качестве шаблона? Разве это не просто поиск 'правильного, а? Это будет не хватать слов , которые имеют ' в другом месте (например , как you'd, you'veи т.д.)
Мартин Tournoij
Да, ты прав. Я отредактировал свой ответ.
wchargin
Спасибо :-) Я не был уверен, что вы сделали это по какой-то причине, поэтому не решался редактировать это сам ...
Мартин Турной
Если вы решите пойти по :mkspell!маршруту, вы также можете отфильтровать слова, которые предназначены для несоответствующих регионов.
Аарон Мэсси
1

На данный момент вы можете просто скачать и скомпилировать новый файл заклинаний для VIM. Цитаты Unicode были добавлены в текущую версию словаря английского языка.

Шаги, основанные на этой статье :

  1. Создайте каталог ~/.vim/spellи перейдите к нему. (Путь является частью VIM runtimepath.)

  2. Для английского языка словарь можно скачать здесь . (Альтернативно: из репозитория LibreOffice - нужны .dicи .affфайлы, и файлы.)

    NB. Для лучших результатов я бы порекомендовал получить как en_US, так и en_GB. Словарь en_GB можно найти в репозитории LibreOffice.

  3. Распакуйте файл:

    unzip -x hunspell-en_US-2017.01.22.zip
    

    Архив должен как минимум содержать эти файлы: en_US.affи en_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. По крайней мере, так, как это работает для меня.

Dummy00001
источник