Подтвердить что ты не робот

Vem spellcheck не всегда работает в .tex файле. Проверьте регион в Vim

Я использую Vim для записи своих файлов .tex, но у меня возникают проблемы с проверкой орфографии в Vim. Иногда он не проверяет слова, и я думаю, что это может быть по следующей причине.

Так как Vim явно не должен проверять все слова в документе .tex, например, а не на преамбуле, он проверяет правописание только в определенных регионах (в смысле синтаксиса). Как я понял из здесь, один из этих регионов texSectionZone. Эти регионы могут стать довольно большими, на самом деле раздел часто бывает, поэтому у Vim возникают проблемы с пониманием того, что он фактически находится в области texSectionZone (или в другом) и поэтому не проверяет орфографию. Это может произойти, если я сделаю поиск в документе или любой прыжок, который пропускает несколько строк (или, скорее, страниц).

То, как я заключил это, может быть причиной: следующее: я знаю, что команда

:echo synIDattr(synID(line("."),col("."),1),"name")

печатает название региона/регионов, в которых вы находитесь (я нашел его здесь), поэтому, когда проверка орфографии не работала, я попробовал это, и он сказал что это ни в каком регионе. Места, в которых он работал, я был в регионе, где он должен проверять правописание.

До сих пор мое единственное решение - найти ближайший раздел над точкой, которую я хочу проверить, и затем вручную переместить курсор вниз к данной точке.

В идеале мне бы очень понравилось решение, которое гарантирует, что этого не произойдет, но я бы также согласился на способ вручную сделать vim 'update', в каком регионе он находится, без меня нужно много перемещать курсор. В последнем случае я думаю о решении, которое можно было бы сделать с помощью ярлыка.

PS Я сомневался, что ответить на этот вопрос. Если вы придумаете заголовок, который лучше объяснит проблему, не стесняйтесь его менять.

4b9b3361

Ответ 1

syntax/tex.vim уже использует довольно сложные шаблоны синхронизации, чтобы гарантировать, что подсветка синтаксиса точна, но для длинных и сложных документов это может все еще не работать.

Лучше всего вы можете увеличить оба значения

syn sync maxlines=200
syn sync minlines=50

(например, до 2000 и 500). Поместите это в ~/.vim/after/syntax/tex.vim, чтобы переопределить значения по умолчанию.

syntax sync fromstart

может дать наилучшие результаты, но может быть слишком медленным. Вы найдете описание синтаксической синхронизации в :help :syn-sync.

Ответ 2

Проверка орфографии не выполняется, если синтаксическая группа не определена (или не найдена vim). Я считаю полезным включить проверку орфографии даже для неопределенной группы (см. Toplevel в документации по синтаксису vim).

Для этого напишите команду:

syntax spell toplevel

в файле ~/.vim/after/syntax/tex.vim. Сделайте файл, если он не существует.