如何查找与cscope一起使用的结构成员并忽略局部变量?

如何查找与cscope一起使用的结构成员并忽略局部变量?,c,vim,cscope,C,Vim,Cscope,我将cscope用于一个带有vim的大型项目,但是没有vim映射(他们出于某种奇怪的原因冻结了vim)。我在vim中使用cscope命令,我希望能够在整个代码中找到结构成员的用法 假设我有这样的东西: 1 typedef struct _s{ 2 3 int x; 4 } S; 5 6 int main(){ 7 8 int x = 1; 9 10 S my_s; 11 12 my_s.x = 5; 13

我将cscope用于一个带有vim的大型项目,但是没有vim映射(他们出于某种奇怪的原因冻结了vim)。我在vim中使用cscope命令,我希望能够在整个代码中找到结构成员的用法

假设我有这样的东西:

  1 typedef struct _s{
  2     
  3     int x;
  4 } S;
  5  
  6 int main(){
  7
  8     int x = 1;
  9
 10     S my_s;
 11
 12     my_s.x = 5;
 13
 14     return my_s.x;
 15 }

如果我发出命令“cs f s x”,它将返回s的成员变量和局部主变量。有没有一种方法我只能找到S的成员变量的出现点?

我认为没有任何方法可以让cscope区分局部变量x和结构成员变量

我们公司解决此问题的方法是为成员变量使用唯一的命名方案,以帮助区分它们:

typedef struct _s{    
    int s_x;
} S;

一开始有点尴尬,但一旦你习惯了,你就可以更容易地浏览代码了。通常,uniquifier只包含与结构相关的几个字符,并且不会太混乱。

您可以将光标定位在结构变量“my_s”上,然后按组合键“gd”,而不是搜索x。这将使您了解my_s的定义,然后使用cscope查找s的定义。

谢谢您的回复。这在我的情况下不起作用,因为我刚刚继承了一个很大的代码库,他们没有遵循这个准则。不过,我会记住这一点。我这样问是因为很多IDE,比如Eclipse和VS都可以做到这一点。显然,vim不是一个IDE,但我想知道它是否能在这一功能上有所突破。这很不幸。如果你真的想办法做到这一点,我很乐意听到!你不能只对“.x”进行文本搜索吗?@ChrisLutz可能还有其他不相关的结构也有一个名为
x
的成员。恐怕问题是
…结构成员使用…
,而不是定义?是的,我试图在整个代码中获得成员变量“x”的所有用法,而不是在定义它的地方。