O Vim não pode encontrar syntax.vim

13

Recentemente, eu precisei criar o Vim a partir da fonte para usar um plug-in que exigia a interpretação de Lua. Isso funcionou bem no meu laptop, mas o computador da torre está com alguns problemas. Sempre que executo o Vim, recebo a mensagem:

Error detected while processing /home/XXXXXX/.vim/vimrc:
line   55:
E484: Can't open file /usr/share/vim/vim74/syntax/syntax.vim

Não é de surpreender que o Vim falhe ao destacar a sintaxe e gere vários outros erros ao editar o texto.

Depois de fazer algumas pesquisas, posso dizer que o syntax.vim está realmente em /usr/local/share/vim/vim74/syntax/syntax.vimoposição ao diretório mencionado anteriormente. Como posso resolver isso?

Mais informações

O Vim foi instalado usando checkinstall. Para compilá-lo, executei os comandos:

./configure --with-features=huge --enable-cscope --enable-pythoninterp=yes --with-python-config-dir=/usr/lib/python2.7/config-x86_64-linux-gnu --enable-multibyte --enable-fontset --disable-gui --disable-netbeans --enable-luainterp=yes --with-lua-prefix=/usr/include/lua5.1 --enable-largefile
make VIMRUNTIMEDIR=/usr/share/vim/vim74
Dillmo
fonte
Você pode simplesmente fazer um link simbólico para onde o vim acha que deveria estar? isto é,sudo ln -s /usr/local/share/vim/vim74/syntax/syntax.vim /usr/share/vim/vim74/syntax/syntax.vim
Sparhawk
Isso parece ter funcionado: sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74. Estou deixando a questão em aberto por enquanto, caso eu encontre outros problemas relacionados.
Dillmo
Você provavelmente gostaria de fazer uma nova pergunta se tiver um problema separado. (Se esta solução funciona em tudo, eu não posso imaginar como poderia parcialmente falhar em outro lugar.) Enfim, escrevi-o como uma resposta ...
Sparhawk

Respostas:

5

Você pode simplesmente fazer um link simbólico para onde o vim acha que deveria estar? ie

sudo ln -s /usr/local/share/vim/vim74/syntax/syntax.vim /usr/share/vim/vim74/syntax/syntax.vim

(Se esse diretório de destino não existir, vincule o diretório de nível superior.)

Sparhawk
fonte
3
Sua resposta definitivamente ajudou: +1 a isso. No entanto, como não estava totalmente correto, não posso marcá-lo como uma solução. O comando sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74funcionou em seu lugar. Obrigado pela sua ajuda de qualquer maneira.
Dillmo
Ok, mas escrevi "Se este diretório de destino não existir, vincule o diretório de nível superior". Enfim, depende de você. Você sempre pode editar o comando exato, se quiser. Ou crie sua própria resposta. Depende de você, de qualquer maneira, mas provavelmente é melhor aceitar um ou outro.
Sparhawk
Em vez de desvendar o resultado, a adição --prefix=/usrà chamada de configuração pode ter sido instalada no local correto imediatamente.
aquaherd
8

O problema é o comando make.

make VIMRUNTIMEDIR=/usr/share/vim/vim74

A partir da pergunta, syntax.vimna verdade , ele está localizado em, /usr/local/share/vim/vim74portanto, você deve usar o seguinte.

make VIMRUNTIMEDIR=/usr/local/share/vim/vim74

Em geral, a VIMRUNTIMEDIRvariável usada por makedeve ser consistente com a prefixvariável usada pelo configurescript.

Praxeolitic
fonte
1
Isso funciona para mim. Não fiz a conexão ao criar o vim a partir da fonte para o YouCompleteMe.
bd1251252
Eu descobri que não precisava do VIMRUNTIME ou do make prefix. Se eu fornecesse um ou ambos, eu teria problemas. Com apenas o make prefixproblema do OP, eu consegui um erro com a cor SlateBlue. Não acredito que tentei apenas com VIMRUNTIME.
trysis
8

Na execução do bash:

export VIMRUNTIME=/usr/share/vim/vim73

Em seguida, no vim execute:

:syntax on

(No meu caso, o vim estava olhando /usr/share/vim/vim74, enquanto não havia /usr/local/share/.... Eu estava no Ubuntu AWS EC2.)

Além disso, precisava ser VIMRUNTIME, não VIMRUNTIMEDIR.

Observe que, para permanência, você pode colocar a exportlinha acima no arquivo de inicialização pessoal do seu shell, por exemplo ~/.bash_profile.

isomorfismos
fonte
Isso funciona! É uma solução fácil para pessoas sem acesso root.
Osama Gamal