在VIM中:如何在“C”文件中突出显示“局部变量”

时间:2009-08-07 10:50:08

标签: vim variables local highlight keyword

我使用标签文件&amp ;;突出显示了所有符号。突出选项。

但我无法突出显示我的局部变量。

我有一个想法,就是说,VIM已经支持为当前文件自动完成关键字,它会自动完成我的本地变量,所以,如果我得到当前文件的关键字列表,那么我将突出显示这些关键字使用“highlight”vim命令。

但问题是,我不知道如何获取当前文件的关键字列表。

1 个答案:

答案 0 :(得分:1)

只要使用--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没有支持重叠区域。)

在相关说明中,您可能还对我的标记突出显示插件available here感兴趣。它将突出显示局部变量(如果b:TypesFileIncludeLocals在运行1时打开的缓冲区中设置为:UpdateTypesFile,但它不处理局部变量的范围。然而,与:help tag-highlight中建议的突出显示相比,它确实提供了更多突出显示的颜色变化。请注意,您的配色方案必须为许多额外的组定义突出显示(例如GlobalVariableLocalVariableDefinedName等)才能充分利用它。