我正在尝试编写一个插件,b:Sdir
将使用源代码获取目录。我试图实现自动完成:
"MakeMake: Generate Makefile.gen
function! MakeMake()
let b:Rdir = input("Project root folder: ", ".", 'file')
exe ":lchdir ".b:Rdir
" More than 1 files can be choosed
let b:Sdir = input("Choose source dir: ", ".", "customlist,CFile")
endfunction
function! CFile(A,L,P)
return split(globpath(b:Rdir, a:A),"\n")
endfunction
但这不起作用。
正常情况下,如果我在split(globpath(b:Rdir, "*"),"\n")
中使用“CFile
”,则会显示目录中的所有文件,但不会过滤文件。
我怎样才能完成这项工作?
答案 0 :(得分:2)
你需要一个更好的水珠模式。您的模式只会搜索完全匹配。因此,最后添加一个通配符和/
。
return split(globpath(b:Rdir, a:A . '*/'), "\n")
您可能希望更进一步,删除globpath()
通过map()
返回的起始目录:
return map(split(globpath(b:Rdir, a:A . '*/'),"\n"), 'v:val[strlen(b:Rdir)+1: -1]')
甚至更好,忘记自定义完成,只需使用dir
。例如input("Choose source dir: ", ".", "dir")
如需更多帮助,请参阅:
:h globpath()
:h glob()
:h :command-complete