如何使 .vimrc 命令依赖于现有文件?

如何使 .vimrc 命令依赖于现有文件?

.vimrc通过做使用病原体

execute pathogen#infect()

但是,如果我设置了一台新计算机并且没有安装病原体

mkdir -p ~/.vim/autoload ~/.vim/bundle && \
curl -LSso ~/.vim/autoload/pathogen.vim https://tpo.pe/pathogen.vim

然后,每次我去编辑文件时,我都会收到一条有关病原体不起作用的消息(然后我可以编辑该文件)。

我希望我的 .vimrc 调用execute pathogen#infect依赖于~/.vim/autoload实际存在的。

在 shell 脚本中我会做类似的事情

if test -f ~/.vim/autoload
  execute pathogen#infect()
fi

但当然这给出了未定义的方法测试。 .vimrc使用不同的语法,例如having"而不是#注释和条件,我不知道正确的格式是什么。

我会使用什么格式的文件.vimrc

答案1

filereadable()或者isdirectory()将是比后者更好的选择findfile()- 后者在一组目录中搜索。顺便说一句,findfile()在我的系统上什么也不返回(空字符串)~/.vim

然而,isdirectory()无法处理~/,但fnamemodify()可以救援。

if isdirectory(fnamemodify('~/.vim/autoload', ':p'))
    execute pathogen#infect()
endif

isdirectory($HOME.'/.vim/autoload')也可以这样。

答案2

这有效:

if findfile("~/.vim/autoload")
  execute pathogen#infect()
endif

相关内容