Je cherche un moyen élégant dans Vimscript pour vérifier si le fichier existe dans le répertoire courant dans une fonction.
J'ai trouvé cela, mais je ne sais pas si c'est la solution la plus élégante (je définirai l'option vim si elle existe) - existe-t-il un moyen de ne pas avoir à faire une autre comparaison du nom de fichier - peut-être utiliser un autre vim
fonction intégrée (?):
:function! SomeCheck()
: if findfile("SpecificFile", ".") == "SpecificFile"
: echo "SpecificFile exists"
: endif
:endfunction
Avec un peu de recherche dans vim man
J'ai trouvé ceci, qui semble beaucoup mieux que l'original:
:function! SomeCheck()
: if filereadable("SpecificFile")
: echo "SpecificFile exists"
: endif
:endfunction
Certains commentaires expriment des inquiétudes concernant filereadable
et l'utilisation de glob
à la place. Cela résout le problème d'avoir un fichier qui existe, mais les autorisations l'empêchent d'être lu. Si vous souhaitez détecter de tels cas, les éléments suivants fonctionneront:
:if !empty(glob("path/to/file"))
: echo "File exists."
:endif
Donner plus de visibilité à commentaire de la métaphie sur la réponse acceptée:
si filereadable (expand ("~/.vim/bundle/vundle/README.md")), laisser g: hasVundle = 1 endif
filereadable
est ce qui est requis, mais il y a une étape très pratique de expand
, si vous utilisez ~
dans votre chemin:
:function! SomeCheck()
: if filereadable(expand("SpecificFile"))
: echo "SpecificFile exists"
: endif
:endfunction
Par exemple
:echo filereadable('~/.vimrc')
donne 0
,:echo filereadable(expand('~/.vimrc'))
donne 1