我正在寻找一个示例,说明如何在vim脚本中使用findfile函数以递归方式向上搜索文件,特别是使用通配符。
每当我将通配符包含在第一个函数参数中时,这似乎都不起作用。
例如,使用以下目录结构:
~/MyProject/
Test.sln
src/
Test.cs
如果我运行以下函数,在编辑文件Test.cs时将pwd设置为〜/ MyProject / src
function! Test()
let a = findfile("*.sln", ".;")
echo a
endfunction
findfile似乎什么也没有返回。但是,如果我修改函数以删除widcard,如下所示:
function! Test()
let a = findfile("Test.sln", ".;")
echo a
endfunction
它做了我所期望的。
我在ubuntu和windows上都测试了这个,我在两者上都看到了相同的行为。我在这里做错了什么,或者findfile只是不支持通配符?缺乏对通配符的支持似乎是一个相当奇怪的遗漏。看来我必须在这里做错事。
答案 0 :(得分:6)
如果您使用的是通配符,我认为glob()
和/或globpath()
功能正是您所需要的。请参阅:h glob()
和:h globpath()
。
答案 1 :(得分:0)
使用外部(快速)find
function! Test()
let l:list=system("find .. -maxdepth 1 -name \*.sln")
echo l:list
endfunction