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

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.)


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.


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.


Isso funciona! É uma solução fácil para pessoas sem acesso root.
Osama Gamal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.