Używanie schematów kolorów z vimem i kitem

16

Próbuję użyć pustynnego schematu kolorów w VIM 7.0 na CentOS 5.6 x64, który znajduje się tutaj:

http://hans.fugal.net/vim/colours/desert.vim

Pobrałem plik i zapisałem go w moim ~/.vim/colorskatalogu. Następnie mówię VIM, aby użył schematu kolorów, wydając:

:colors desert

Powinno to wyglądać tak:

wprowadź opis zdjęcia tutaj

Jednak dostaję to:

wprowadź opis zdjęcia tutaj

Loguję się na ten serwer jako zwykły użytkownik (nie rootlub sudo) przy użyciu PuTTY 0.60 i ustawiłem następujące opcje w Window -> Colours:

Pozwól terminalowi określać kolory ANSI - zaznaczone
Zezwól terminalowi na użycie trybu 256 kolorów - zaznaczone
Pogrubiony test ma inny kolor - sprawdzony
Próba użycia palet logicznych - niezaznaczone
Użyj kolorów systemowych - niezaznaczone

Jeśli sudozaloguję się jako rooti spróbuję tego samego, nie otrzymam żadnych innych kolorów poza białym tekstem na czarnym tle.

Czy te schematy są głównie skierowane do gVIM i czy PuTTY po prostu nie jest w stanie wyświetlić tych kolorów?

Poszukałem trochę w Google i natknąłem się na artykuły takie jak ten, ale wydaje się, że nie działają.

Kev
źródło

Odpowiedzi:

23

Domyślnie PuTTY przedstawia się jako xterm. Baza danych terminfo , używana przez różne programy do określania możliwości terminala, xtermobsługuje tylko osiem kolorów:

$ infocmp -1L xterm | grep max_colors

Oznacza to, że nawet jeśli wersja xterm nie obsługuje trybu 256 kolorów, programy nie będą o tym wiedzieć.

  • Najłatwiejszym rozwiązaniem jest ustawienie zmiennej środowiskowej $ TERM na xterm-256color.

    (W katalogu ~ / .profile, można użyć:
    if [ "$TERM" = xterm ]; then TERM=xterm-256color; fi)

  • Możesz powiedzieć PuTTY, aby zawsze identyfikował się jako xterm-256color, poprzez Konfiguracja → Połączenie → Dane → Ciąg terminala .

    Uwaga: Jeśli użyjesz numeru 1 lub 2 i połączysz się z serwerem, który nie ma odpowiedniego wpisu terminfo, wszystkie programy TUI ulegną awarii.

  • Możesz także ustawić 't_Co'opcję vim, 256aby przesłonić wartość terminfo.

    if &term == "xterm"
        set t_Co=256
    endif
    
  • Lub możesz edytować bazę danych terminfo .

    $ infocmp -L -1 xterm | sed -r 's/(max_colors)#[0-9]+/\1#256/' > /tmp/xterm
    $ tic /tmp/xterm
    

    Zaktualizowany wpis zostanie zachowany ~/.terminfo.

użytkownik1686
źródło
Doskonała odpowiedź. Jest lepiej, ale wydaje mi się, że 256 kolorów nie wystarcza do oddania tych pastelowych odcieni. Masz pomysł, dlaczego nie otrzymuję żadnych kolorów, gdy jestem zalogowany jako root?
Kev
1
@Kev: 1) Tryb 256 kolorów jest najlepszym, co można uzyskać na emulatorze terminali kompatybilnym z VT100. (Słyszałem, że KDE Konsola ma obsługę kolorów rzeczywistych, ale jest to bardzo niestandardowe.) 2) Gdy logujesz się jako root, otrzymujesz osobny katalog domowy, a także osobny ~/.vim/colors.
user1686
1
@ Kev: Ponieważ vi nie ma schematów kolorów ani podświetlania składni - ani niczego poza oryginalnymi podstawowymi funkcjami. (Vim jest w końcu „Vi Improved”.)
user1686
1
vi --versionmówi, że to vim, więc czy jest to wycięty vim, aby wyglądał jak vi? Przepraszam, jeśli to głupie pytanie, minęły lata, odkąd pracowałem z unixem w gniewie (pudełka SCO Unix z portami szeregowymi) i było tylko vi (prawdziwe vi).
Kev
1
Raczej. Kiedy uruchomisz vima jako „ vi”, zaczyna się on w trybie „kompatybilności”, zachowując się tak bardzo, jak to możliwe, jak vi. Nie znam CentOS, więc nie jestem pewien, czy jest to tylko tryb, czy całkowicie osobna, zredukowana wersja. (Moja dystrybucja zamiast tego pakuje prawdziwe vi ...)
user1686 14.09.11