2013-05-19 85 views
0

我有一個文件,例如a.pl具有此方法調用:爲什麼gf不適用於vim,但ctrl +]的作品?

add_location(@crew);

實際的定義是在同一個文件。如果我這樣做:CTRL + ]光標跳轉到定義。如果我做的:gf我得到:
E447: Can't find file "add_location" in path

如果我做:pwd我得到的當前工作目錄。投訴的路徑是什麼?函數定義在同一個文件中。

回答

6

<C-]>命令轉到光標下的標記;您似乎有一個有效的標籤數據庫(即之前已運行ctags),並且有一個名爲add_location的標籤。

gf命令轉到文件光標下,即它把add_location作爲文件名(可能附加一個後綴的相同.pl(見:help 'suffixesadd'),並搜索在由'path'指定的目錄。

因此,基本上,您使用的是錯誤的命令; <C-]>是正確的。請注意,如果位置在同一個文件中,您也可以使用*命令轉到下一個匹配項;這對於您沒有標籤數據庫,因此不能使用功能更強大的<C-]>命令。

+0

所以,你的意思是'gf'只有在定義在不同的文件中才有效? – Cratylus

+2

'gf'與定義無關,只處理_file names_,例如如果你有'foo.txt',它會打開那個文件。爲什麼應該有兩個相同的命令?你要找的是''。 –

+0

那麼'gf'只會打開包含該定義的文件?因爲這是我認爲 – Cratylus

相關問題