Вы можете выделить распознанные имена, используя файл тегов, если файл тегов генерируется с помощью --c-kinds=+l
, чтобы убедиться, что он включает локальные переменные. Однако в настоящее время не существует реалистичного способа определения области действия этих переменных (ctags не предоставляет много информации), поэтому Vim не будет различать переменные в одной функции и другой:
void main(void)
{
int MyVariable; // Highlighted
}
int MyFunction(void)
{
int MyFunctionVariable; // Highlighted
MyVariable = 1; // Syntax error, but still highlighted
}
Это можно сделать, проанализировав файл C немного подробнее и создав области синтаксиса для каждой функции, но это далеко не просто (и было бы несовместимо с плагинами, такими как rainbow.vim , как Vim не поддерживает перекрывающиеся регионы).
В связанной заметке вас также может заинтересовать плагин для подсветки тегов , доступный здесь . Он будет подсвечивать локальные переменные (если b:TypesFileIncludeLocals
установлен в 1
в открытом буфере при запуске :UpdateTypesFile
), но это не касается области действия локальных переменных. Однако он предлагает гораздо больше цветовых вариаций подсветки, чем подсветка, предложенная в :help tag-highlight
. Обратите внимание, что в вашей цветовой схеме должны быть определены блики для множества дополнительных групп (например, GlobalVariable
, LocalVariable
, DefinedName
и т. Д.), Чтобы в полной мере использовать ее.