2009-05-29 8 views
3

Je souhaite avoir une boucle if-else dans .screenrc pour les codes suivants afin qu'elle soit exécutée si mon terminal prend en charge 256 couleurs. Sinon, il n'est pas exécuté.Impossible de définir les couleurs en fonction de la prise en charge du terminal dans .screenrc

attrcolor b ".I" 
# tell screen how to set colors. AB = background, AF=foreground 
termcapinfo xterm "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm" 
termcapinfo xterm-color "Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm" 

Comment pouvez-vous faire le if-else boucle .screenrc?

Répondre

2

Cela devrait déjà être défini par le fichier de base de données terminfo. Dans mon cas, mon terminal par défaut est xterm. Il utilise 8 couleurs qui se reflète dans vi en utilisant le

: set termcap

commande

une inspection de l'article t_Co qui est fixé à 8. Si je change mon terminal à un autre type de terminal comme gnome-256color qui utilise 256 couleurs alors vi montrera t_Co comme égal à 256. Je ne sais pas pourquoi vous devez essayer de le définir dans votre fichier .vimrc.

+0

Merci pour le renseignement! Alors le seul problème est d'avoir une boucle if-else dans .screenrc. –

0

Mon pseudo-code tentative pour .screenrc

[ -e t_Co(256) ] . ColorFile 

Le même en anglais

If 256 color support, then source ColorFile. 
1

Je crois que quelque chose comme cela devrait fonctionner si vous avez bash disponible:

#!/bin/bash 
if [ "$TERM" = "xterm-256color" ]; then 
    # do stuff for 256 
else 
    if [ "$TERM" = "xterm" ]; then 
     # do stuff for 16 
    else 
     # do something else entirely 
    fi 
fi 
+0

Mon application de terminal est iTerm d'OS/X. Je ne suis pas sûr que votre code fonctionne ou non, puisque je n'ai aucune preuve que cela fonctionne. –

+2

Eh bien, vous pouvez essayer. –

+0

Que se passe-t-il si vous "cat $ TERM" sur OSX? –

Questions connexes