[vim] Vimscript에 특정 파일이 있는지 감지하는 방법은 무엇입니까?

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


답변

받아 들여진 답변에 대한 형이상 사의 의견 에 대한 가시성을 더 제공합니다 .

파일 읽기 가능 (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

답변