如何在使用globpath()函数时排除文件

时间:2014-08-06 18:47:31

标签: vim glob

我想在Vim中获取没有.tex.bib扩展名的路径中的任何文件。

我尝试了(为了忽略tex文件)以下命令

:echo globpath({some path}, '*.[^tex]*')

但也会忽略tex个字符组合(例如.toc个文件)。

那么如何修改模式以匹配任何没有.tex.bib扩展名的文件?

编辑:Vim'负面预测已通过\@!完成。我有一个目录/test,其中包含foo.bibfoo.texfoo.pdffoo.auxfoo.toc个文件。我试着做了

:echo globpath('C:/Users/Pedro/Desktop/test', '\w*\.\%\(tex\|bib\)\@!')

但是返回一个空字符串。

1 个答案:

答案 0 :(得分:2)

使用globpath()函数,您不需要正则表达式。它是一个全局函数。你可以设置wig选项(wildignore),然后调用函数。

set wig=*.bib,*.tex

然后

:echo globpath('/your/path','*.*')

做一个测试:

kent$  pwd
/tmp/test

kent$  ls -1
bar.bib
bib.bar
f.txt
tex.foo
x.tex

在vim中:

:set wig=*.bib,*.tex
:echo globpath('/tmp/test','*')
我们得到了:

/tmp/test/bib.bar
/tmp/test/f.txt
/tmp/test/tex.foo

请注意,您可以将其称为globpath('/path','*',0,1),以便在list中返回值,有时在脚本中使用非常方便。