2015-09-05 54 views
0

是否有任何vim命令或插件可以從一個函數的引用跳轉到它的定義在一個腳本文件,這是在「自動加載」目錄之一,除了使用ctags?例如,將光標放在「call xyz#abc#foo()」的上方,然後輸入此命令將打開文件「.../autoload/xyz/abc.vim」,並將光標位置設置爲「function xyz #abc#foo()「導航vim自動加載功能沒有標籤

每次插入一個新插件時,我都不打擾生成標籤文件。

+0

這個功能可能是誰引用多個自動加載腳本文件vim的插件開發人員非常有用。 因爲「autoload」的父目錄在「runtimepath」選項中列出,並且可以從函數名稱推斷出更多的子目錄,所以不難定位自動加載函數的位置。 我不知道是否有人已經實現了這種功能,並將插件上傳到某處。 – isczg

回答

0

(對不起,我回答得很晚)

我使用標籤來瀏覽我的自動加載功能。

但我也有一箇舊的:SearchInRuntime sp autoload/xyz/abc.vim命令,將打開我們正在尋找的自動加載文件,如果尚未打開。

但它不應該很難實現該功能。一旦你有expand('<cword>')獲得的函數名或什麼的,你可以

  • 構建插件名稱:let plgname = 'autoload/'.substitute(matchstr(fnname, '.*\ze#'), '#', '/', 'g').'.vim'
  • 尋找它:let matches = globpath('&rtp', plgname, 1, 1)
  • 檢查你只有一個匹配,...
  • 打開文件:exe 'sp '.matches[0] - 可能需要更多subtitle approaches才能避免多次打開它。
  • ,然後搜索函數定義:call search('^\s*fun\%[ction]:\=\s\+'.fnname', ....)