2012-06-18 43 views
1

在grep(或vim)中是否有一種方法可以打印出指定的函數/類?從項目中獲取類/函數

即來源:

class InternalTimer(Sim.Process): 
     def __init__(self, fsm): 
      Sim.Process.__init__(self, name="Timer") 
      random.seed() 
      self.fsm = fsm 

     def Lifecycle(self, Request): 
      while True: 
       yield Sim.waitevent, self, Request 
       yield Sim.hold, self, Request.signalparam[0] 
       if(self.interrupted()): 
        self.interruptReset() 
       else: 
       self.fsm.process(Request.signalparam[1]) 

調用$my-func-grep '__init__(self,fsm)' filename.py會產生

 def __init__(self, fsm): 
      Sim.Process.__init__(self, name="Timer") 
      random.seed() 
      self.fsm = fsm 
+0

調用** $ fgrep'__init __(self,fsm)'filename.py **應該只產生** def __init __(self,fsm):**。你想要的功能定義? – tuxuday

+0

如果你有'tags'文件,你可以使用':pt __init__'來查看函數的簽名。 – romainl

+0

@tuxuday不,我想打印出這個函數,在這種情況下,我使用fgrep作爲一個開玩笑的虛構函數-shpper。沒想到fgrep已經被重載到古典grep上了。更新的例子更清晰 – Bolster

回答

3

您可以創建一個VIM擴展,有效地執行以下操作:

import inspect 
print inspect.getsource(name_of_function) 

此打印功能簽名和函數的主體。如果Vim已經用Python支持編譯,你可以在Python本身編寫擴展。