関数の現在のディレクトリにファイルが存在するかどうかを確認するVimscriptのエレガントな方法を探しています。
私はこれを思い付きましたが、それが最もエレガントな解決策であるかどうかはわかりません(存在する場合はvimオプションを設定します)-ファイル名の別の比較を行う必要がない方法はあります-異なるvim
を使用する可能性があります組み込み関数(?):
:function! SomeCheck()
: if findfile("SpecificFile", ".") == "SpecificFile"
: echo "SpecificFile exists"
: endif
:endfunction
vim man
で少し検索すると、これが見つかりました。
:function! SomeCheck()
: if filereadable("SpecificFile")
: echo "SpecificFile exists"
: endif
:endfunction
一部のコメントは、filereadable
と、代わりにglob
を使用することに関する懸念を表明しています。これにより、存在するファイルが存在する問題に対処しますが、アクセス許可によりファイルが読み取られなくなります。そのような場合を検出したい場合、以下が機能します。
:if !empty(glob("path/to/file"))
: echo "File exists."
:endif
受け入れられた回答の metaphyのコメント をさらに可視化する:
if filereadable(expand( "〜/ .vim/bundle/vundle/README.md"))let g:hasVundle = 1 endif
filereadable
は必須ですが、パスで_~
_を使用する場合は、expand
の追加の便利な手順があります。
_:function! SomeCheck()
: if filereadable(expand("SpecificFile"))
: echo "SpecificFile exists"
: endif
:endfunction
_
例えば
:echo filereadable('~/.vimrc')
は_0
_を返します。:echo filereadable(expand('~/.vimrc'))
は_1
_を返します