Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/vim/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检测Vimscript中是否存在特定文件?_Vim_File Exists - Fatal编程技术网

如何检测Vimscript中是否存在特定文件?

如何检测Vimscript中是否存在特定文件?,vim,file-exists,Vim,File Exists,我正在Vimscript中寻找一种优雅的方法来检查当前目录中是否存在文件 我提出了下面的代码,但我不确定这是否是最优雅的解决方案(如果文件存在,我将设置一个Vim选项)。有没有办法不必对文件名进行另一次比较 可能使用不同于Vim的内置功能 :function! SomeCheck() : if findfile("SpecificFile", ".") == "SpecificFile" : echo "SpecificFile exists" : endif :endfun

我正在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

让大家更清楚地了解已接受答案:

如果文件可读(展开(“~/.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:函数的无效参数
。如何指定相对于主目录的文件来检查插件?(另请参见)您是在谈论用户主目录吗?我猜只是一个
~
,但我不是肯定的。当你遇到那个错误时,你提供了什么参数?我用
~
试过了,它给出了那个错误。现在我又试了一次,成功了…:-)可能只是打字错误什么的。但很高兴它对你有用!与其他答案不同,这似乎也适用于目录。