2011-05-31 24 views
12

我使用cscope做了一個vim的大型項目,但沒有vim映射(他們凍結vim出於某種奇怪的原因)。我在vim中使用cscope命令,我希望能夠在整個代碼中找到結構成員的用法。如何查找struct成員與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五六X」將返回能夠對S的成員變量和局部主變。有沒有一種方法我只能找到S的成員變量的出現?

+0

你不能只是對「.x」進行文本搜索嗎? – 2011-06-01 07:25:24

回答

4

我不認爲有什麼辦法讓cscope區分局部變量x和結構成員變量。

我們解決了我公司在此問題是使用一個獨特的命名方案,成員變量,幫助區分他們的方式:

typedef struct _s{  
    int s_x; 
} S; 

這是起初有點尷尬,但一旦你習慣了它可以讓代碼更容易導航。通常情況下,這個分離器只有幾個與結構相關的字符,並且不會讓事情變得糟糕。

+0

感謝您的回覆。這在我的情況下不起作用,因爲我剛剛繼承了一個大型代碼庫,他們不遵循這個指南。不過,我會記住這一點。我問了很多IDE,比如Eclipse和VS都可以做到這一點。顯然vim不是IDE,但我想知道它是否可以達到該功能。 – 2011-05-31 20:27:25

+0

這很不幸。如果你確實找到了一個方法來做到這一點,我很樂意聽到它! – 2011-06-01 18:16:29

0

您可以將光標放在結構變量「my_s」上,然後按組合鍵「gd」代替搜索x。這將定位你的my_s的定義,然後使用cscope來查找S.的定義。

+0

恐怕問題是'... struct成員使用...',而不是定義? – sehe 2011-06-01 09:40:22

+1

是的,我試圖在整個代碼中獲得成員變量'x'的所有用法,而不是它被定義的地方。 – 2011-06-01 17:44:42