Zamieniono / usr / bin / vim - teraz dostaję komunikaty o błędach

7

Próbowałem uaktualnić z domyślnej instalacji vima w systemie Mac OS X (vim 7.2) do wersji używanej przez MacVim (vim 7.3), tworząc dowiązanie symboliczne:

ln -s /Applications/MacVim.app/Contents/MacOS/Vim /usr/bin/vim 

Jednak teraz otrzymuję następujące komunikaty o błędach:

sk@supernova:~/ > /usr/bin/vim
E254: Cannot allocate color Red
E254: Cannot allocate color White
E254: Cannot allocate color Blue
E254: Cannot allocate color Red
E254: Cannot allocate color Grey
E254: Cannot allocate color Blue
E254: Cannot allocate color Brown
E254: Cannot allocate color SeaGreen
E254: Cannot allocate color SeaGreen
E254: Cannot allocate color Yellow
E254: Cannot allocate color Red
E254: Cannot allocate color Blue
E254: Cannot allocate color Magenta
E254: Cannot allocate color DarkCyan
E254: Cannot allocate color LightMagenta
E254: Cannot allocate color Grey
E254: Cannot allocate color Blue
E254: Cannot allocate color Magenta
E254: Cannot allocate color Red
E254: Cannot allocate color Yellow
E254: Cannot allocate color Black
E254: Cannot allocate color LightGrey
E254: Cannot allocate color DarkBlue
E254: Cannot allocate color Grey
E254: Cannot allocate color DarkBlue
E254: Cannot allocate color Grey
E254: Cannot allocate color DarkBlue
E254: Cannot allocate color LightGrey
E254: Cannot allocate color LightBlue
E254: Cannot allocate color LightMagenta
E254: Cannot allocate color Blue
E254: Cannot allocate color LightCyan
E254: Cannot allocate color LightGrey
E254: Cannot allocate color Grey90
E254: Cannot allocate color Grey90
E254: Cannot allocate color LightRed
E254: Cannot allocate color DarkGrey
E254: Cannot allocate color LightGrey
E254: Cannot allocate color Cyan
Error detected while processing /Users/sk/.vimrc:
line    1:
E185: Cannot find color scheme desert
Press ENTER or type command to continue

Czy ktoś wie jak to naprawić? Jeśli uruchamiam bezpośrednio vimlub /Applications/MacVim.app/Contents/MacOS/Vimbezpośrednio, nie otrzymuję komunikatów o błędach. Tylko jeśli /usr/local/bin/vimzostanie wezwany. Bezpośrednio lub za pośrednictwem innej aplikacji wiersza polecenia.


Tylko jeśli ktoś komentuje, że mógłbym po prostu stworzyć alias, tak naprawdę zrobiłem to wcześniej

alias vim=/Applications/MacVim.app/Contents/MacOS/vim

jednak niektóre inne narzędzia wiersza poleceń były nadal używane /usr/bin/vim.

znq
źródło
W rzeczywistości pełna lista dostępnych kolorów FG jest na stałe zakodowana. github.com/b4winckler/macvim/blob/master/src/…
Nick

Odpowiedzi:

11

To znany problem. Od :help MacVim:

Note: Starting MacVim by creating a symlink to >
    .../MacVim.app/Contents/MacOS/Vim with 'ln -s' does not work.

Znalazłem wiele osób, które otrzymały ciąg błędów E254 przy użyciu dowiązania symbolicznego. Zobacz ten bilet w repozytorium problemów MacVim. Rozwiązanie jest następujące:

    Najprawdopodobniej dzieje się tak dlatego, że dowiązałeś bezpośrednio do
    plik binarny Vim, na który Cocoa nie zezwala. Proszę użyć
    zamiast tego alias lub skrypt powłoki mvim.

MacVim wyposażony jest w skrypcie startowym mvim. Możesz to zmienić na „alias”, vimjeśli wolisz używać go zamiast vima systemowego. Jeśli chcesz uruchomić vima w terminalu, a nie jako aplikację GUI, ustaw alias na mvim -v. Dodaj export EDITOR=vimdo swojego, ~/.bash_profileaby upewnić się, że wszystkie aplikacje terminalowe używają teraz aliasu vim. Powinno to obejmować wszystkie twoje bazy.

michaelmichael
źródło
4

Zmiana czegoś w / usr / bin nie jest najlepszym sposobem na załatwienie różnych spraw, ponieważ Apple może po prostu ponownie to zastąpić.

Błędy są prawdopodobnie, jak mówi @karmatic, ale prawdopodobnie najlepszą rzeczą do zrobienia jest umieszczenie dowiązania symbolicznego w / usr / local / bin i sprawienie, aby powłoka miała go na ścieżce wcześniejszej niż / usr / bin.

O ile wiem, żadne narzędzie wiersza poleceń nie używa bezpośrednio / usr / bin / vi (używam emacsa, więc zauważyłem, że muszę użyć vi) To, co robią, to używa zmiennej środowiskowej $ EDITOR, więc ustaw na / usr / local / bin

znak
źródło
3

Nie mam jeszcze żadnego przedstawiciela, więc nie mogę komentować odpowiedzi Michaela Michaelisa, ale na podstawie jego odpowiedzi zredagowałem mvimskrypt opakowania, aby dodać kolejną instrukcję case. Więc jeśli $ name było vim, doda -vopcję. Następnie symlinkowałem /usr/local/bin/mvimdo /usr/local/bin/vim.

47 # vimdiff, view, and ex mode
48 case "$name" in
49     vim)
50         opts="$opts -v"
51         ;;
52     *vimdiff)

Wszystko to dlatego, że w niektórych przypadkach nie mogłem polegać na ustawieniu EDYTORA lub aliasach, ale mogłem polegać na tym, że / usr / local / bin jest w PATH.

Nnutter
źródło
1

Wygląda na to, że ma to coś wspólnego z twoją kolorystyką. Dezaktywuj motyw pustynny w .vimrc i sprawdź, czy to pomaga. Zmień colorscheme desertna 'colorscheme desert.

Najlepszym sposobem uniknięcia takich problemów jest zainstalowanie vim 7.3 z portów mac .

karmatyczna
źródło
Niestety nie. Próbowałem już wcześniej. Wtedy nie dostaję E185: Cannot find color scheme desertbłędu, ale nadal wszystkie pozostałe.
znq
0

Bardzo polecam korzystanie z homebrew --with-override-system-vim.

Instaluje MacVim i tworzy dowiązanie symboliczne / usr / local / bin / vim. Działa dla wiersza poleceń, vima także wywołań EDITOR.

Oto polecenie:

brew install macvim --with-override-system-vim

(Na marginesie, wersja Brew MacVima działa dobrze z wtyczką YouCompleteMe)

taj
źródło
-1

brew install vim

sudo ln -s /usr/local/Cellar/vim/<VIM_VERSION>/bin/vim /usr/bin/vim

Nawiasem mówiąc, jeśli OS to EI Capitan, musisz wyłączyć SIP jako cios:

Jak wyłączyć SIP

Derek Chen
źródło