如何检测Vimscript中是否存在特定文件?
我正在Vimscript中寻找一种优雅的方法来检查当前目录中是否存在文件 我提出了下面的代码,但我不确定这是否是最优雅的解决方案(如果文件存在,我将设置一个Vim选项)。有没有办法不必对文件名进行另一次比较 可能使用不同于Vim的内置功能如何检测Vimscript中是否存在特定文件?,vim,file-exists,Vim,File Exists,我正在Vimscript中寻找一种优雅的方法来检查当前目录中是否存在文件 我提出了下面的代码,但我不确定这是否是最优雅的解决方案(如果文件存在,我将设置一个Vim选项)。有没有办法不必对文件名进行另一次比较 可能使用不同于Vim的内置功能 :function! SomeCheck() : if findfile("SpecificFile", ".") == "SpecificFile" : echo "SpecificFile exists" : endif :endfun
: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
让大家更清楚地了解已接受答案: 如果文件可读(展开(“~/.vim/bundle/vundle/README.md”)),则让g:hasVundle=1 endif
filereadable
是必需的,但是如果您在路径中使用~
,则有一个额外的方便步骤展开
:
:function! SomeCheck()
: if filereadable(expand("SpecificFile"))
: echo "SpecificFile exists"
: endif
:endfunction
比如说
给出:echo filereadable('~/.vimrc')
0
给出:echo filereadable(展开('~/.vimrc'))
1
if !empty(expand(glob("filename")))
echo "File exists"
else
echo "File does not exists"
endif
对我来说很好如果SpecificFile存在,但当前用户无法读取,该怎么办。也许findfile更好。
filereadable
的帮助提到,如果您不关心可读性,可以使用glob
。如果filereadable(展开(“~/.vim/bundle/vundle/README.md”))让g:hasVundle=1endif@metaphy这是一个很好的评论,我在此基础上添加了一条,以使其更具可视性,但是如果你想要积分,请随意添加你自己的答案,我将删除我的答案。我得到E116:函数的无效参数。如何指定相对于主目录的文件来检查插件?(另请参见)您是在谈论用户主目录吗?我猜只是一个~
,但我不是肯定的。当你遇到那个错误时,你提供了什么参数?我用~
试过了,它给出了那个错误。现在我又试了一次,成功了…:-)可能只是打字错误什么的。但很高兴它对你有用!与其他答案不同,这似乎也适用于目录。