2

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

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

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

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

4

1 回答 1

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 不支持重叠区域)。

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

于 2009-08-07T12:32:31.253 回答