Vim findfile函数用法?

时间:2011-07-23 16:14:48

标签: vim

我正在寻找一个示例,说明如何在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只是不支持通配符?缺乏对通配符的支持似乎是一个相当奇怪的遗漏。看来我必须在这里做错事。

2 个答案:

答案 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