Кто-нибудь еще нашел выделение синтаксиса VIM для Javascript неоптимальным? Я обнаружил, что иногда мне нужно прокручивать, чтобы настроить подсветку синтаксиса, так как иногда она загадочным образом сбрасывает всю подсветку.
Есть ли какие-нибудь обходные пути или способы исправить это? Я использую vim 7.1.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете попробовать этот улучшенная подсветка синтаксиса Javascript, а не тот, который поставляется с VIMRUNTIME.
Я пробовал выпуск 9/12/08 и выпуск 17/05/07, и ни один из них не улучшил ситуацию. Открытие сложного файла javascript в середине по-прежнему не приводит к выделению, и мне нужно прокрутить несколько страниц вверх, чтобы vim начал подсветку правильно.
@thomas и @michael вы можете установить рамку, которую vim будет использовать для выделения. Я не могу вспомнить, какова фактическая настройка, но она устанавливает, сколько строк выше и ниже текущего отображаемого окна, на которое vim должен смотреть при определении подсветки синтаксиса
У него слишком много элементов синтаксиса, связанных с Special, но это легко исправить. И, похоже, лучше, чем тот, который поставляется с Vim.
Плагин странным образом обрабатывает знаки деления. Все, что находится после знака деления и включая его, выделяется красным цветом, как текст. .../2*x+4... того же цвета, что и ".../2*x+4..."
Возможно, потребуется настроить синхронизацию раскраски синтаксиса. Я обнаружил, что в определенных контекстах мне нужно это изменить.
Синтаксическая синхронизация (": help syn-sync") управляет тем, как vim отслеживает и обновляет синтаксический анализ кода для раскраски, чтобы он мог начать рисование в любом месте файла.
Значения по умолчанию не всегда работают для меня, поэтому иногда я обнаруживаю, что выдаю
:syn sync fromstart
Предлагаю прочитать документацию под
:help syn-sync
или просто проверьте
:help syntax
и найди раздел о синхронизации.
чтобы принять обоснованное решение среди четырех доступных основных вариантов. Я поддерживаю сопоставления с функциональными клавишами для переключения между режимами «fromstart» и «ccomment» и просто для очистки настроек синхронизации.
Для быстрого и грязного исправления иногда я просто прокручиваю вверх и вниз, и подсветка меняет настройку. Ctrl + L для перерисовки экрана тоже может исправить.
Ну, я изменил Синтаксис Javascript И Чжао и добавил поддержку ключевых слов Ajax, также выделил методы DOM и другие.
Вот он, он далек от совершенства, так как я все еще новичок в Vim, но пока что у меня есть работа. Мой синтаксис Javascript. Если можно исправить, добавьте функции, пожалуйста.
ОБНОВЛЕНИЕ: Я забыл, что эти синтаксические выделения отображаются только в том случае, если вы включили их в свою собственную цветовую схему, как я это сделал в моей цветовой схеме Nazca. Я проверю, могу ли я добавить эту строку в мой измененный файл синтаксиса.
Следуйте новой версии файла синтаксиса javascript в github, поскольку больше не требуется изменять вашу текущую цветовую схему.
Мне нравится, как выглядят ваши скриншоты, но ваш файл синтаксиса не делает ничего другого, чем стандартный синтаксис vim js, когда я его загружаю. У меня есть другие файлы пользовательского синтаксиса, поэтому мне интересно, почему ваш не работает ..
Мой основан на Yi Zhao, который, как я считаю, намного превосходит стандартный синтаксис vim js. Кроме того, я добавил дополнительные строки в свою цветовую схему Nazca для vim. Я не пробовал добавлять эти строки непосредственно в измененный файл синтаксиса. На самом деле очень легко и просто добавить эти линии в вашу собственную цветовую схему.
Ах, он ничего не сделал, потому что я не видел, чтобы вам также нужно было добавлять дополнительные линии к любой цветовой схеме. Понятно сейчас. Спасибо!
Быстрое обновление, файл синтаксиса теперь достаточно зрелый, хорошо работает со всеми цветовыми схемами, все благодаря общественные усилия
Это действительно старый пост, но я испытал то же самое: иногда подсветка синтаксиса просто перестала работать при просмотре раздела javascript в файле .html. Как упоминается в OP, быстрое обходное решение заключалось в том, чтобы прокрутить вверх, и затем волшебным образом вещи снова начнут выделяться.
Сегодня я нашел основную проблему и хорошее решение. В Vim подсветка синтаксиса использует контекст для получения правильной подсветки, где контекст определяется предыдущими строками. Можно указать, сколько строк перед текущей строкой используется, выдав :syntax sync minlines=200. В этом случае он будет использовать до 200 предыдущих строк в качестве контекста. Можно использовать весь файл (что может быть медленным для длинных файлов), запустив :syntax sync fromstart.
Как только я это обнаружил, я добавил эту строку в свой .vimrc:
autocmd BufEnter *.html :syntax sync fromstart
Таким образом, файлы .html будут использовать весь файл в качестве контекста. Таким образом, раздел javascript всегда будет правильно выделен, независимо от того, какой длины раздел JS. Надеюсь, это поможет кому-то еще!
Это лучшее решение для устранения проблемы с подсветкой синтаксиса HTML / JS. Я не знаю, почему в VIM все еще есть эта ошибка, которую не удалось исправить. github.com/vim/vim/issues/1775
В Windows 10, когда я создал файл _vimrc в своем домашнем каталоге со строкой из этого ответа в нем, выделение перестало работать полностью, потому что файл конфигурации VIM по умолчанию не использовался. В результате я сделал первую строку в моем файле _vimrcsource $VIM/_vimrc, и все заработало, как ожидалось.
Осторожно: я заметил, что автор улучшенного маркера отказался от синтаксической синхронизации с самого начала в самой последней версии ... поэтому проблема, которую вы видели, может возникать в этом маркере. Похоже, в прошлом так всегда было с самого начала.