Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
vim:如何获取目录树上下搜索的路径_Vim - Fatal编程技术网

vim:如何获取目录树上下搜索的路径

vim:如何获取目录树上下搜索的路径,vim,Vim,我正试图让vimgf处理include文件。如果路径是本地的,则一切正常。但是,如果它必须向上搜索目录树,向下搜索指定树,则无法找到该文件 我想要的很容易证明: cd /some/src mkdir -p a/long/path/down mkdir -p a/long/path/again touch a/long/path/down/util.h echo '#include "a/long/path/down/util.h"' > a/long/path/again/file.cc

我正试图让vim
gf
处理include文件。如果路径是本地的,则一切正常。但是,如果它必须向上搜索目录树,向下搜索指定树,则无法找到该文件

我想要的很容易证明:

cd /some/src
mkdir -p a/long/path/down
mkdir -p a/long/path/again
touch a/long/path/down/util.h
echo '#include "a/long/path/down/util.h"' > a/long/path/again/file.cc
cd a/long/path/again
vim file.cc
在本例中,当我编译时,我将使用
-I/some/src
,这样在编译file.cc时就会找到
a/long/path/down/util.h

现在,在
file.cc
的vim会话中,我在
a/long/path/down/
目录中(注意上面的
cd
),我在
a/long/path/down/util.h
包含路径上执行
gf
。我需要什么
路径
规范才能使其正常工作?我以为这就是我所需要的:

set path+=**
但我得到:

E447: Can't find file "a/long/path/down/util.h" in path
不应该让它向上搜索,向上搜索,向上搜索。。。对于
a
然后找到
a/long/path/down/util.h
是否存在

在我的项目中,我可能在
/some
中有多个版本的
src/
,因此我希望搜索是相对于
pwd
的。也就是说,
set path+=/some/src
对我来说不是一个可行的解决方案


谢谢

您正在寻找
,而不是
**

set pah+=**;
执行您想要的操作,但速度会非常慢,因为Vim将“上下递归”,然后“上下递归”,等等。在数量惊人的目录中查找您的文件

一个可能的改进是使用“停止目录”:

这样Vim就不会在整个硬盘中搜索您的文件。stop目录越近,路径越有用

更好的改进是将特定目录添加到
路径

set path+=/path/to/a/long/path/down
它与要求标准目录结构的项目/框架/语言配合得非常好。这可以按文件类型或路径自动执行


:帮助文件搜索
:帮助“路径”

***
下,所有内容都解释得非常清楚,而不是向上搜索。。。它在递归地向下搜索。对于这种特定情况,
set path+=../../../../../**
只起作用。但是这通常是不可行的。顺便问一下,
/some
是什么意思?它是
/
中的目录还是像
some/
那样的普通目录?谢谢您的回复
/some
只是我为本例编写的一个文本目录名,在本例中是来自
/
的绝对路径。我不知道“**”没有搜索到。
set path+=/path/to/a/long/path/down