我使用标签文件和突出显示选项突出显示了所有符号。
但我无法突出显示我的局部变量。
我有一个想法,也就是说,VIM 已经支持当前文件的关键字自动补全,它会自动补全我的局部变量,所以,如果我得到当前文件的关键字列表,那么我将使用“highlight”突出显示这些关键字" vim 命令。
但问题是,我不知道如何获取当前文件的关键字列表。
您可以使用标签文件突出显示已识别的名称,只要标签文件是使用 生成的,--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
利用它。