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

在VIM中:如何突出显示;“局部变量”;在“a”中;";文件,vim,variables,local,highlight,keyword,Vim,Variables,Local,Highlight,Keyword,我使用标记文件和高亮显示选项高亮显示了所有符号 但我无法突出显示我的局部变量 我有一个想法,就是VIM已经支持当前文件关键字的自动完成,它会自动完成我的局部变量,因此,如果我得到当前文件的关键字列表,那么我将使用“highlight”VIM命令突出显示这些关键字 但问题是,我不知道如何获取当前文件的关键字列表。您可以使用标记文件突出显示可识别的名称,只要标记文件是使用--c-kinds=+l生成的,以确保其中包含局部变量。然而,目前还没有确定这些变量范围的实际方法(CTAG不提供太多信息),因此

我使用标记文件和高亮显示选项高亮显示了所有符号

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

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


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

您可以使用标记文件突出显示可识别的名称,只要标记文件是使用
--c-kinds=+l
生成的,以确保其中包含局部变量。然而,目前还没有确定这些变量范围的实际方法(CTAG不提供太多信息),因此Vim不会区分一个函数中的变量和另一个函数中的变量:

void main(void)
{
    int MyVariable; // Highlighted

}

int MyFunction(void)
{
    int MyFunctionVariable; // Highlighted

    MyVariable = 1; // Syntax error, but still highlighted
}
这可以通过更详细地解析C文件并为每个函数创建语法区域来完成,但这远不是一件容易的事(而且它与Vim不支持重叠区域的插件不兼容)


另一方面,您也可能对我的标记突出显示插件感兴趣。它将突出显示局部变量(如果在运行
:UpdateTypesFile
时在打开的缓冲区中将
b:typesfileincludecals
设置为
1
),但它不处理局部变量的范围。但是,它确实提供了比
:help tag highlight
中建议的突出显示更多的突出显示颜色变化。请注意,您的配色方案必须为许多额外的组(例如,
GlobalVariable
LocalVariable
DefinedName
等)定义高光,才能充分利用它。

您能举个例子说明这个问题吗?也许我有点糊涂,但我真的不明白。