vim:如何获取目录树上下搜索的路径
我正试图让vimvim:如何获取目录树上下搜索的路径,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
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