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

Gvim long multiline string highlighting

Я широко использую многострочные docstrings в моем исходном коде на python, чтобы включить doctests. К сожалению, vim/gvim, похоже, нелегко выделяет синтаксис, иногда теряя его и забывая, что он находится в середине строкового литерала, а выделение "переворачивает" из строки в источник и источник в строку.

Я могу прокручивать вверх и обратно, а vim обычно исправляет проблему, но иногда это требует нескольких попыток.

Помимо того, что мои докстерии короче, есть ли способ помочь vim сохранить выделение на этих длинных литералах в порядке?

4b9b3361

Ответ 1

:syntax syn управляет тем, как Vim синхронизирует состояние синтаксиса, которое должно применяться в определенной точке текста (:help syn-sync). Для наиболее точной синхронизации (но это замедлит работу vim), попробуйте:

autocmd BufEnter * :syntax sync fromstart

Или если вы хотите синхронизировать вручную, когда вы заметили это неправильно, попробуйте эту команду (вы можете сопоставить ее с комбинацией клавиш):

:syntax sync fromstart

Вы также можете найти minlines полезным. Из :help syn-sync

Если задан аргумент "minlines = {N}", разбор всегда начинается не менее что много строк назад. Это можно использовать, если синтаксический анализ может занять несколько линии, прежде чем он будет исправлен, или когда невозможно использовать синхронизацию.

Поэтому размещение этого в вашем .vimrc может помочь вам:

syntax sync minlines=500

Изменить: найдите эту страницу, в которой есть все, что вам нужно: http://vim.wikia.com/wiki/Fix_syntax_highlighting

Ответ 2

Вы, вероятно, не хотите синхронизировать с исходным кодом для всех типов кода, который вы редактируете, просто html. Если это так, добавьте это в свой vimrc:

autocmd FileType html autocmd BufEnter * :syntax sync fromstart