2010-09-27 84 views
2

我有一個基本的VIM功能問題:(我試着用搜索引擎並不能找到答案)VIM自定義函數的定義/位置

  1. 我如何列出所有自定義 功能(我做:功能,不能 找到我的自定義功能)
  2. 如何在自定義函數列表 (或存儲它們的位置)中獲得 函數的定義。

謝謝您的幫助

回答

7

假設你的函數被調用MyFunction的,那麼下面的工作對我來說:

:verbose function My<tab> 

(用於<標籤>我的意思其實按標籤)

如果你的函數在vim中加載,它應該顯示在那裏,你可以看到它的定義。

+0

感謝,現在我可以做(:詳細函數列出所有函數及其位置。:詳細功能partOfName ,和:詳細函數functionName) – kite 2010-09-27 08:22:44

+1

@kite'verbose function'不會列出* all *函數,只有那些不是匿名的函數。例如,我的一些插件根本不包含非匿名函數。 – ZyX 2010-09-27 08:38:12

2

如果你不能找到在function輸出不帶參數的自定義功能,那麼它可能是宣佈類似的匿名函數:

let g:dict={} 
function g:dict.f() 
    echo "here" 
endfunction 

在這種情況下,以獲取其定義是使用function g:dict.f的唯一途徑(提前verbose作爲@skeept建議知道它在哪裏定義)。請注意,您無法在此處使用選項卡填寫,並且無法獲取所有匿名函數的列表。

代替g:dict.ffunction g:dict.f你可以使用function {N},其中N是返回匿名函數數,例如function {substitute(string(g:dict.f), '^.*\(\d\+\).*$', '\1', '')}任何表情。或者只是function {242}如果你得到的是一個這樣的錯誤:Error detected while processing function 243..242:並希望看到函數242的定義。

+0

感謝匿名函數方法 – kite 2010-09-27 09:32:32