我正在寻找一个示例,该示例如何在vim脚本中使用findfile函数来向上递归搜索文件,特别是使用通配符。

每当我将通配符作为第一个功能参数的一部分时,这似乎都不起作用。

例如,具有以下目录结构:

~/MyProject/
    Test.sln
    src/
      Test.cs

如果我运行以下功能,则在将pwd设置为〜/MyProject/src的文件Test.cs中编辑时
function! Test()
   let a = findfile("*.sln", ".;")
   echo a
endfunction

findfile似乎什么也不返回。但是,如果我修改该功能以如下方式删除名片,则:
function! Test()
   let a = findfile("Test.sln", ".;")
   echo a
endfunction

它确实达到了我的期望。

我已经在ubuntu和Windows上对此进行了测试,并且在两者上都看到了相同的行为。我在这里做错什么了吗,还是findfile不支持通配符?缺少对通配符的支持似乎是一个相当奇怪的遗漏。看来我在这里一定做错了。

最佳答案

如果您使用通配符,那么我想寻找的是glob()和/或globpath()函数。参见:h glob():h globpath()

10-07 13:12