为什么gf不能用于vim但是ctrl +]有效?

Cra*_*lus 0 linux vi vim ctags

我有一个文件,例如a.pl有这个方法调用:

add_location(@crew);

实际定义在同一个文件中.如果我这样做:CTRL + ]光标跳转到定义.如果我这样做:gf我得到:
E447: Can't find file "add_location" in path

如果我这样做,:pwd我将获得当前的工作目录.抱怨的路径是什么?函数定义位于同一文件中.

Ing*_*kat 6

<C-]>命令转到光标下的标签 ; 你似乎有一个有效的标签数据库(即之前运行ctags过),并且有一个名为的标签add_location.

gf命令转到光标下的文件,即它视为add_location文件名(可能附加类似.pl(见:help 'suffixesadd')的后缀,并在指定的目录中搜索)'path'.

所以,基本上,你正在使用错误的命令来完成工作; <C-]>是正确的.请注意,如果该位置位于同一文件中,您还可以使用该*命令转到下一个匹配项; 这对于没有标签数据库很有用,因此无法使用更强大的<C-]>命令.

  • `gf`与定义无关,它只处理_file names_,例如,如果你有`foo.txt`,它会打开那个文件.为什么要有两个相同的命令?你要找的是`<C - ]>`. (2认同)