Vim ne peut pas trouver syntax.vim

13

Récemment, j'ai eu besoin de construire Vim à partir des sources pour utiliser un plugin nécessitant une interprétation Lua. Cela a bien fonctionné sur mon ordinateur portable, mais mon ordinateur tour a des problèmes. Chaque fois que je lance Vim, je reçois le message:

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

Sans surprise, Vim ne parvient pas à mettre en évidence la syntaxe et lance un tas d'autres erreurs lors de l'édition de texte.

Après avoir fait quelques recherches moi-même, je peux dire que syntax.vim est réellement dans /usr/local/share/vim/vim74/syntax/syntax.vim, par opposition au répertoire mentionné précédemment. Comment puis-je résoudre ça?

Plus d'informations

Vim a été installé à l'aide de checkinstall. Pour le compiler, j'ai exécuté les commandes:

./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
la source
Pouvez-vous simplement créer un lien symbolique vers l'endroit où vim pense qu'il devrait être? soitsudo ln -s /usr/local/share/vim/vim74/syntax/syntax.vim /usr/share/vim/vim74/syntax/syntax.vim
Sparhawk
Cela semble avoir fonctionné: sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74. Je laisse la question ouverte pour le moment, au cas où je rencontrerais d'autres problèmes connexes.
Dillmo
Vous voudrez probablement poser une nouvelle question si vous avez un problème distinct. (Si cette solution fonctionne, je ne peux pas imaginer comment elle pourrait échouer partiellement ailleurs.) Quoi qu'il en soit, je l'ai écrite comme réponse…
Sparhawk

Réponses:

5

Pouvez-vous simplement créer un lien symbolique vers l'endroit où vim pense qu'il devrait être? c'est à dire

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

(Si ce répertoire cible n'existe pas, liez plutôt le répertoire de niveau supérieur.)

Sparhawk
la source
3
Votre réponse a certainement aidé: +1 pour cela. Cependant, comme ce n'était pas tout à fait correct, je ne peux pas le marquer comme une solution. La commande sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74a plutôt fonctionné. Merci de toute façon pour votre aide.
Dillmo
D'accord, mais j'ai écrit "Si ce répertoire cible n'existe pas, alors liez le répertoire de niveau supérieur à la place." Quoi qu'il en soit, à vous de décider. Vous pouvez toujours modifier dans la commande exacte si vous le souhaitez. Ou créez votre propre réponse. À vous de toute façon, mais il vaut probablement mieux accepter l'un ou l'autre.
Sparhawk
Au lieu de créer un lien symbolique entre les résultats, l'ajout --prefix=/usrà l'appel de configuration peut s'être installé immédiatement au bon emplacement.
aquaherd
8

Le problème est la commande make.

make VIMRUNTIMEDIR=/usr/share/vim/vim74

À partir de la question, se syntax.vimtrouve réellement dans /usr/local/share/vim/vim74, vous devriez donc utiliser les éléments suivants.

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

En général, la VIMRUNTIMEDIRvariable utilisée par makedoit être cohérente avec la prefixvariable utilisée par le configurescript.

Praxéolitique
la source
1
Cela fonctionne pour moi. Je n'ai pas fait la connexion lors de la construction de vim à partir de la source pour YouCompleteMe.
bd1251252
J'ai trouvé que je n'avais pas besoin de VIMRUNTIME ou du make prefix. Si j'ai fourni l'un ou l'autre, ou les deux, j'ai eu des problèmes. Avec seulement make prefixj'ai eu le problème de l'OP, avec les deux j'ai eu une erreur avec la couleur SlateBlue. Je ne pense pas avoir essayé avec VIMRUNTIME.
trysis
8

En course bash:

export VIMRUNTIME=/usr/share/vim/vim73

Puis dans vim run:

:syntax on

(Dans mon cas, Vim regardait /usr/share/vim/vim74, alors qu'il n'y avait pas de/usr/local/share/... . J'étais sur un AWS EC2 Ubuntu.)

En outre, il fallait que ce soit VIMRUNTIME, nonVIMRUNTIMEDIR .

Notez que pour la permanence, vous pouvez placer la exportligne ci-dessus dans le fichier d'initialisation personnel de votre shell, par exemple ~/.bash_profile.

isomorphismes
la source
Ça marche! C'est une solution facile pour les personnes sans accès root.
Osama Gamal