Vim не выделяет некоторые слова

0

Я использую плагин TagHighlight в Vim, чтобы получить подсветку моих пользовательских классов и членов класса C++.

Этот трюк, который я нашел там, позволил мне лучше понять, как Вим считал определенные слова. В каком-то смысле я могу задать вопрос сейчас: "Хорошо, почему вы положили это слово зеленым?"

Странно, что он работает хорошо, за исключением (многих) случайных случаев, см.:

Изображение 174551

hi<CTagsNamespace> trans<CTagsNamespace> lo<Constant> имен sf библиотеки было выделено, и Vim сообщает hi<CTagsNamespace> trans<CTagsNamespace> lo<Constant> когда я спрашиваю, почему, отлично.

Но std не имеет, а ответ - hi<> trans<cParen> lo<>.

Мой переменный angle был замечен как hi<CTagsMember> trans<CTagsMember> lo<Member> (почему бы и нет?), Но его небольшая speed bro 'не имеет: это hi<> trans<cBlock> lo<>.

Так.. почему? Есть ли способ, которым Vim может действительно прочитать и понять весь мой проект, а затем подчеркнуть его надлежащим образом?

Теги:
plugins
vim
ide
highlight

1 ответ

1
Лучший ответ

Из описания TagHighlight:

TagHighlight - это плагин, который выделяет имена классов, переменных, типов и т.д. В исходном коде в Vim. Это позволяет быстрее и легче обнаруживать ошибки в коде. Используя излишние ctags и разбор выходных данных, typedefs, #defines, перечисляемые имена и т.д. Все четко выделяются разными цветами.

У вас, вероятно, нет источника для пространства имен std, поэтому нет тегов и, следовательно, нет подсветки.

Вероятно, ваши ctags не генерируют теги для локальных переменных, поэтому скорость не выделяется. Но у вас, вероятно, есть переменная с именованными углами как глобальная или переменная-член, поэтому локальный переменный угол подсвечивается случайно.

И не вините Vim, это, вероятно, что-то делать с плагином и вашими тегами :)

  • 0
    О, я никогда не хотел обвинять Вима (мне это нравится!). Если я хорошо понимаю, мне просто нужно найти поддержку для пространства имен std (я думаю, что TagHighlight самом деле обеспечивает это), и принять некоторые случайные TagHighlight интерпретации ... хорошо! :) .. Просто чтобы убедиться (и я не хочу винить здесь ничего): это означает, что Vim на самом деле не понимает, что я использую angle в качестве простой локальной переменной. И, похоже, пока нет возможности «научить» этому: /
  • 1
    @ Iago-lito Я не читаю код плагина, но я полагаю, что он использует список идентификаторов для применения основных моментов; список получен из ctags, поэтому, если ctags не выполняется для кода std (или, по крайней мере, заголовков), он не будет присутствовать в списке для выделения. Из этого списка он, вероятно, выделяет все слова на экране, которые соответствуют этому списку - он не проверяет контекст, поэтому он не может понять, что локальная переменная имеет то же имя, что и поле члена.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню