Vim nie może znaleźć syntax.vim

13

Ostatnio musiałem zbudować Vima ze źródła, aby użyć wtyczki wymagającej tłumaczenia Lua. Działa to dobrze na moim laptopie, ale mój komputer typu tower ma pewne problemy. Za każdym razem, gdy uruchamiam Vima, otrzymuję wiadomość:

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

Nic dziwnego, że Vim następnie nie wyróżnia składni i rzuca wiele innych błędów podczas edycji tekstu.

Po samodzielnym przeprowadzeniu badań mogę stwierdzić, że plik syntax.vim jest w rzeczywistości /usr/local/share/vim/vim74/syntax/syntax.vim, w przeciwieństwie do wcześniej wspomnianego katalogu. Jak mogę to rozwiązać?

Więcej informacji

Vim został zainstalowany przy użyciu checkinstall. Aby go skompilować, uruchomiłem polecenia:

./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
źródło
Czy możesz po prostu zrobić dowiązanie symboliczne do tego, co według vima powinno być? tj.sudo ln -s /usr/local/share/vim/vim74/syntax/syntax.vim /usr/share/vim/vim74/syntax/syntax.vim
Sparhawk
Wydaje się, że pracował: sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74. Na razie pozostawiam pytanie otwarte, na wypadek, gdyby napotkałem inne powiązane problemy.
Dillmo,
Prawdopodobnie chciałbyś zadać nowe pytanie, jeśli masz osobny problem. (Jeśli to rozwiązanie w ogóle działa, nie wyobrażam sobie, jak mogłoby częściowo zawieść gdzie indziej.) W każdym razie napisałem to jako odpowiedź…
Sparhawk

Odpowiedzi:

5

Czy możesz po prostu zrobić dowiązanie symboliczne do tego, co według vima powinno być? to znaczy

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

(Jeśli ten katalog docelowy nie istnieje, połącz zamiast niego katalog wyższego poziomu).

Krogulec
źródło
3
Twoja odpowiedź zdecydowanie pomogła: +1 za to. Ponieważ jednak nie było to całkiem poprawne, nie mogę oznaczyć tego jako rozwiązania. sudo ln -s /usr/local/share/vim/vim74 /usr/share/vim/vim74Zamiast tego polecenie zadziałało. W każdym razie dziękuję za pomoc.
Dillmo,
Okej, ale napisałem: „Jeśli ten katalog docelowy nie istnieje, to zamiast tego połącz katalog wyższego poziomu”. W każdym razie, do ciebie. Zawsze możesz edytować dokładne polecenie, jeśli chcesz. Lub stwórz własną odpowiedź. W każdym razie do ciebie, ale prawdopodobnie najlepiej zaakceptować jedno lub drugie.
Sparhawk
Zamiast symbolizować wynik, dodanie --prefix=/usrdo wywołania konfiguracji mogło zostać zainstalowane w prawidłowej lokalizacji.
aquaherd
8

Problemem jest polecenie make.

make VIMRUNTIMEDIR=/usr/share/vim/vim74

Z pytania syntax.vimfaktycznie znajduje się, /usr/local/share/vim/vim74więc powinieneś zamiast tego użyć następujących.

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

Zasadniczo VIMRUNTIMEDIRużywana zmienna makepowinna być spójna ze prefixzmienną używaną przez configureskrypt.

Prakseolityczny
źródło
1
To działa dla mnie. Nie nawiązałem połączenia podczas budowania vima ze źródła dla YouCompleteMe.
bd1251252,
Odkryłem, że nie potrzebuję VIMRUNTIME ani make prefix. Jeśli podałem jedno lub oba, mam problemy. Tylko z tym, make prefixże mam problem z OP, z obydwoma dostałem błąd w kolorze SlateBlue. Nie sądzę, żebym próbował z VIMRUNTIME.
trysis
8

W biegu bashowym:

export VIMRUNTIME=/usr/share/vim/vim73

Następnie w vim run:

:syntax on

(W moim przypadku vim szukał /usr/share/vim/vim74, podczas gdy nie było /usr/local/share/.... Byłem na Ubuntu AWS EC2.)

Także, to musiało być VIMRUNTIME, nie VIMRUNTIMEDIR.

Zauważ, że dla trwałości możesz umieścić powyższą exportlinię w osobistym pliku inicjalizacji powłoki, np ~/.bash_profile.

izomorfizmy
źródło
To działa! Jest to łatwa poprawka dla osób bez dostępu do konta root.
Osama Gamal,