我想在Vim中获取没有.tex
或.bib
扩展名的路径中的任何文件。
我尝试了(为了忽略tex文件)以下命令
:echo globpath({some path}, '*.[^tex]*')
但也会忽略tex
个字符组合(例如.toc
个文件)。
那么如何修改模式以匹配任何没有.tex
或.bib
扩展名的文件?
编辑:Vim'负面预测已通过\@!
完成。我有一个目录/test
,其中包含foo.bib
,foo.tex
,foo.pdf
,foo.aux
和foo.toc
个文件。我试着做了
:echo globpath('C:/Users/Pedro/Desktop/test', '\w*\.\%\(tex\|bib\)\@!')
但是返回一个空字符串。
答案 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
中返回值,有时在脚本中使用非常方便。