Я использую плагин TagHighlight в Vim, чтобы получить подсветку моих пользовательских классов и членов класса C++.
Этот трюк, который я нашел там, позволил мне лучше понять, как Вим считал определенные слова. В каком-то смысле я могу задать вопрос сейчас: "Хорошо, почему вы положили это слово зеленым?"
Странно, что он работает хорошо, за исключением (многих) случайных случаев, см.:
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 может действительно прочитать и понять весь мой проект, а затем подчеркнуть его надлежащим образом?
Из описания TagHighlight:
TagHighlight - это плагин, который выделяет имена классов, переменных, типов и т.д. В исходном коде в Vim. Это позволяет быстрее и легче обнаруживать ошибки в коде. Используя излишние ctags и разбор выходных данных, typedefs, #defines, перечисляемые имена и т.д. Все четко выделяются разными цветами.
У вас, вероятно, нет источника для пространства имен std, поэтому нет тегов и, следовательно, нет подсветки.
Вероятно, ваши ctags не генерируют теги для локальных переменных, поэтому скорость не выделяется. Но у вас, вероятно, есть переменная с именованными углами как глобальная или переменная-член, поэтому локальный переменный угол подсвечивается случайно.
И не вините Vim, это, вероятно, что-то делать с плагином и вашими тегами :)
std
(я думаю, чтоTagHighlight
самом деле обеспечивает это), и принять некоторые случайныеTagHighlight
интерпретации ... хорошо! :) .. Просто чтобы убедиться (и я не хочу винить здесь ничего): это означает, что Vim на самом деле не понимает, что я используюangle
в качестве простой локальной переменной. И, похоже, пока нет возможности «научить» этому: /