Подсветка синтаксиса javascript в vim

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

Есть ли какие-нибудь обходные пути или способы исправить это? Я использую vim 7.1.

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
49
0
40 826
5
Перейти к ответу Данный вопрос помечен как решенный

Ответы 5

Ответ принят как подходящий

Вы можете попробовать этот улучшенная подсветка синтаксиса Javascript, а не тот, который поставляется с VIMRUNTIME.

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

Thomas Kammeyer 12.09.2008 20:30

Я пробовал выпуск 9/12/08 и выпуск 17/05/07, и ни один из них не улучшил ситуацию. Открытие сложного файла javascript в середине по-прежнему не приводит к выделению, и мне нужно прокрутить несколько страниц вверх, чтобы vim начал подсветку правильно.

Michael Gundlach 21.11.2008 21:36

@thomas и @michael вы можете установить рамку, которую vim будет использовать для выделения. Я не могу вспомнить, какова фактическая настройка, но она устанавливает, сколько строк выше и ниже текущего отображаемого окна, на которое vim должен смотреть при определении подсветки синтаксиса

Rob Wells 26.11.2008 21:58

У него слишком много элементов синтаксиса, связанных с Special, но это легко исправить. И, похоже, лучше, чем тот, который поставляется с Vim.

graywh 23.03.2010 20:31

Плагин странным образом обрабатывает знаки деления. Все, что находится после знака деления и включая его, выделяется красным цветом, как текст. .../2*x+4... того же цвета, что и ".../2*x+4..."

puk 28.10.2011 08:10

Возможно, потребуется настроить синхронизацию раскраски синтаксиса. Я обнаружил, что в определенных контекстах мне нужно это изменить.

Синтаксическая синхронизация (": 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, когда я его загружаю. У меня есть другие файлы пользовательского синтаксиса, поэтому мне интересно, почему ваш не работает ..

djeikyb 13.04.2011 23:16

Мой основан на Yi Zhao, который, как я считаю, намного превосходит стандартный синтаксис vim js. Кроме того, я добавил дополнительные строки в свою цветовую схему Nazca для vim. Я не пробовал добавлять эти строки непосредственно в измененный файл синтаксиса. На самом деле очень легко и просто добавить эти линии в вашу собственную цветовую схему.

Jose Elera 19.04.2011 00:09

Ах, он ничего не сделал, потому что я не видел, чтобы вам также нужно было добавлять дополнительные линии к любой цветовой схеме. Понятно сейчас. Спасибо!

djeikyb 19.04.2011 21:57

Быстрое обновление, файл синтаксиса теперь достаточно зрелый, хорошо работает со всеми цветовыми схемами, все благодаря общественные усилия

Jose Elera 25.11.2013 10:19

Это действительно старый пост, но я испытал то же самое: иногда подсветка синтаксиса просто перестала работать при просмотре раздела 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

northtree 23.01.2018 08:40

В Windows 10, когда я создал файл _vimrc в своем домашнем каталоге со строкой из этого ответа в нем, выделение перестало работать полностью, потому что файл конфигурации VIM по умолчанию не использовался. В результате я сделал первую строку в моем файле _vimrcsource $VIM/_vimrc, и все заработало, как ожидалось.

Dave F 08.10.2020 23:58

Другие вопросы по теме