Como tornar um comando .vimrc dependente de um arquivo existente?

0

Meu .vimrc usa o patógeno fazendo

execute pathogen#infect()

No entanto, se eu configurar um novo computador e não tiver instalado o patógeno com

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

Então, toda vez que vou editar um arquivo, recebo uma mensagem sobre o patógeno não funcionar (e depois posso editar o arquivo).

Gostaria que minha chamada de .vimrc para execute pathogen#infect dependesse de ~/.vim/autoload de fato existente.

No script de shell, eu faria algo como

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

mas claro que dá teste de método indefinido. .vimrc usa uma sintaxe diferente, como ter " em vez de # para comentários e, para um condicional, não sei qual é o formato correto.

Qual formato eu usaria para um arquivo .vimrc ?

    
por Michael Durrant 23.11.2015 / 14:40

2 respostas

2

filereadable() ou isdirectory() seria escolhas melhores que findfile() - a última pesquisa em um conjunto de diretórios. BTW, findfile() não retorna nada (uma string vazia) no meu sistema para ~/.vim

No entanto, isdirectory() não pode processar ~/ , mas fnamemodify() vem para o resgate.

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

isdirectory($HOME.'/.vim/autoload') teria funcionado bem.

    
por 23.11.2015 / 15:31
0

Isso funcionou:

if findfile("~/.vim/autoload")
  execute pathogen#infect()
endif
    
por 23.11.2015 / 14:45

Tags