2008-11-01 5 views

Répondre

2

La solution qui est actuellement me donne un certain succès est de redéfinir la fonction shell comme un terme ansi:

;; shell-mode 
(defun sh() 
    (interactive) 
    (ansi-term "/bin/zsh")) 
+1

C'est une bonne idée. Il résout également l'incompatibilité du mode shell avec des commandes comme more/less et man. –

+3

Ombre la commande shell "réelle". Utilisez le terme ou le terme ansi-terme directement au lieu de masquer le mode coque simple. – remvee

+1

Correction de l'ombrage. – SetJmp

0

Les éléments suivants doivent travailler dans votre .bash_profile ou .bashrc

case $TERM in 
xterm-color) 
export PS1='\[\e]0;\W\007\]\[\e[34;1m\]\W\[\e[0m\]\$ ' 
;; 
*) 
export PS1='\W\$ ' 
;; 
esac 
32

J'ai ce qui suit dans mon .emacs

(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on) 
+0

Le chargement automatique n'est pas nécessaire dans la version récente d'Emacs (elle est automatiquement chargée par défaut). – cjm

+1

Cela a aidé, (la couleur bleue est apparue) cependant certains codes de contrôle ASCII sont encore apparus dans le tampon. Il ne fait aucun doute qu'il y a un ou plusieurs détails à combiner avec cette solution. – SetJmp

+0

Je pense que cette réponse devient upvotes reflète qu'il fonctionne sur certaines plates-formes communes pour les utilisateurs de stackoverflow. Mais voir aussi la réponse acceptée. – SetJmp

1

Pour l'alternative "ignorer" , mettez quelque chose comme "alias ls=ls" ou "unset LS_COLORS" dans votre fichier ~/.emacs_{bash,tsch,whatever-your-shell-is-called}. Ce fichier est exécuté dans tous les shells subordonnés créés par emacs.

Emacs envoie la nouvelle enveloppe le contenu du fichier ~/.emacs_shellname en entrée, si elle existe, où shellname est le nom du fichier que l'enveloppe a été chargé. Par exemple, si vous utilisez bash, le fichier qui lui est envoyé est ~/.emacs_bash. Si ce fichier n'est pas trouvé, Emacs essaie de se replier sur ~/.emacs.d/init_shellname.sh.

Questions connexes