Vim使用gf命令出现问题

22

我正在使用Vim,并且已经将路径(set path+= c:/work/etc/etc)设置为我的项目目录(用于C#),但使用命令'gf'仍然给我错误:

E:447 找不到文件。

我做错了什么吗?


6
当我试图指挥我的女友时,我总是会遇到问题。 - Nifle
6个回答

17

你好,

如果想要了解当前路径设置的更多细节,可以输入以下命令来查看正在被包含的内容以及vim无法找到的文件:

:checkpath

然后您将获得未找到的文件的转储,例如:

--- Included files not found in path --- 
<io.h> 
vim.h --> 
  <functions.h> 
  <clib/exec_protos.h>

或者你可以通过输入以下命令获取所有包含的文件列表,无论是找到还是没找到:

:checkpath!

输入

:help path

要了解更多有关路径语法的信息,请参考相关文档。

编辑:不要忘记使用该语法。

set path=/work

这将完全重置您的路径变量为您刚刚声明的内容。我建议使用

set path+=/work

相反,使用 /work 目录添加到当前路径而不会覆盖当前路径。

希望对你有所帮助。


1
我尝试使用checkpath,它给了我消息“找到所有包含的文件”。是的,我使用了set path += mypath。谢谢。 - gearsin

8
我发现
还有...
:set path+=./foo/bar

添加一个搜索路径,相对于当前文件所在的目录,就像 '.' 一样。

我的 vim 不想搜索这样的包含文件。

#include <common/util/string.h>

所以我需要做的是

:set path+=foo/bar

而不是

:set path+=./foo/bar

前者添加了相对于当前工作目录的搜索路径。希望这能帮助某些人。


3

首先,您能使用 :find file.name 命令打开文件吗?(有关更多信息,请参见 :help find)。如果此命令无法正常运行,则说明您的路径不正确。如果 :find 命令成功找到了您的文件,则请执行以下步骤:

  1. 确保您不处于 Visual/Insert 模式。
  2. 将光标放在文件名的第一个字母上并按下 gf

2
我知道这是一个老问题,但我也因为另一个原因遇到了一些麻烦,花了一些时间才找到原因。希望这对某人有所帮助。
当一个目录与匹配时,不能用于其中的文件,也不能使用:find。
如果你阅读的文档,这是显而易见的,但我忘记了我曾经改变过这个变量,以及它的确切用途。此外,我使用了一个glob,并且对我来说并不立即明显,我在其中使用的目录也与这个glob匹配。

1

确保文件名没有前导字符,如果按下gf,即使光标在help.txt上,也无法使用gf

file=help.txt

1
也许我可以在可视模式下将文件标记为准备工作的一步? - IndustryUser1942

-4

如果你在谈论由tomnomnom编写的gf工具,那么以下是设置步骤:

设置GO的PATH路径(如果你还没有设置)。

export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin

步骤1:从github下载工具

步骤2:cp -r path/to/tomnomnom/gf/examples ~/.gf

步骤3:source ~/tools/gf/gf-completion.bash

现在gf应该可以在任何地方使用自动完成。来源:原始资料位于repo.


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接