How to detect if a specific file exists in Vimscript?
Solution 1:
With a bit of searching in vim man
I've found this, which looks much better that the original:
:function! SomeCheck()
: if filereadable("SpecificFile")
: echo "SpecificFile exists"
: endif
:endfunction
Solution 2:
Some of the comments express concerns about filereadable
and using glob
instead. This addresses the issue of having a file that does exist, but permissions prevent it from being read. If you want to detect such cases, the following will work:
:if !empty(glob("path/to/file"))
: echo "File exists."
:endif
Solution 3:
Giving some more visibility to metaphy's comment on the accepted answer:
if filereadable(expand("~/.vim/bundle/vundle/README.md")) let g:hasVundle = 1 endif
filereadable
is what is required, but there's an extra handy step of expand
, should you be using ~
in your path:
:function! SomeCheck()
: if filereadable(expand("SpecificFile"))
: echo "SpecificFile exists"
: endif
:endfunction
For example
-
:echo filereadable('~/.vimrc')
gives0
, -
:echo filereadable(expand('~/.vimrc'))
gives1
Solution 4:
Sorry if it's too late, but doing
if !empty(expand(glob("filename")))
echo "File exists"
else
echo "File does not exists"
endif
works fine for me