2012-10-17 13 views
8

To pytanie jest na temat korzystania MacVim i ZSH na Mac OS X.ZSH - Prawidłowe Shell wejście/wyjście wewnątrz Vim/MacVim

Używam powłoki ZSH i jest ona skonfigurowana do korzystania z kolorowego monitu, a wszystko działa dobrze z samym ZSH.

Jednakże kiedy ustawić tę skorupę być domyślną z VIM (usin: set shell=zsh\ -li), vim daje mi następujące symbole podczas wprowadzania lub wyprowadzania tekst:

[35mnikhgupta[00m at [[33mMacbookPro[00m in [01;32m~[00m [00m 

podczas gdy powinna ona po prostu powiedzieć:

nikhgupta at MacbookPro in ~ 

Kiedy wprowadzam jakiś tekst, otrzymuję te same dziwne symbole, prawdopodobnie dlatego, że używam podświetlania składni w locie dla mojej powłoki ZSH. Wydedukowałem, że te symbole są kodami kolorystycznymi?

Czy ktoś może mi pomóc, jak odrzucić te kody kolorów i po prostu wypisać tekst w powłoce Vima?

Pozdrowienia

+0

Czy na telefonie celem jest użycie kolorowego podkreślenia składni _inside_ Vim? – jahroy

+0

no .. zamiast tego, chcę usunąć wszystkie kolorowe składni (która jest obecna w mojej powłoce ZSH logowania) dla polecenia powłoki (': sh') wewnątrz Vima. – Stoic

+0

GUI Vim (MacVim) lub CLI Vim? Nie da się tego zrobić w GUI Vimie, który nie ma wbudowanej powłoki zdolnej do wyświetlania kolorów i żadnego powodu, dla którego miałby pęknąć w CLI Vim. – romainl

Odpowiedz

2

Kiedy robisz :shell z MacVim wartość $TERM jest ustawiony na dumb. Możesz tego użyć do odpowiedniego ustawienia środowiska ZSH.

Nie jestem jednak zaznajomiony z zsh, więc sam będziesz pisał poprawny blok warunkowy. W bash, to będzie wyglądać tak:

if [ $TERM == 'dumb' ]; 
    then 
    echo 'Special setup for MacVim' 
fi 

Właściwie, to problem podsłuchu mnie przez jakiś czas, więc mam tylko napisane to dla mojego własnego użytku (w bash):

if [ $TERM == 'dumb' ]; 
    then 
    # no colors 
    export PS1="\n\w\n\u $ " 
    else 
    # colors 
    export PS1="\n\[\033[32m\]\w\n\[\033[1;31m\]\[\033[1;36m\]\u\[\033[0m\] $ \[\033[0m\]" 
fi