écran Gnu en emacs en mode shell: comment résoudre les codes d'échappement de couleur

StackOverflow https://stackoverflow.com/questions/4689822

  •  11-10-2019
  •  | 
  •  

Question

Je voudrais joindre l'écran ou tmux à l'intérieur emacs, en mode shell. Je me retrouve souvent en cours d'exécution avec emacs processus inférieurs à l'intérieur de l'écran sur des serveurs distants; ce serait bien si je pouvais changer le flux de travail locaux emacs + CLOCHARD; capacité à refixer sessions persistantes est un must, cependant. (Un tel flux est particulièrement utile pour l'analyse dans R [1])

Shell-mode est plutôt souhaitable parce que je continue à rencontrer des pépins divers et même se bloque lorsque vous utilisez la combinaison de terme ou Mx Mx ansi terme + écran + R. Cependant, je ne peux pas sembler se débarrasser de couleur ansi rendu comme échapper à des codes à l'écran lorsqu'il est exécuté sous Mx shell. Quand j'utilise ansi-color-for-comint-mode-on, ils sont très bien - mais dès que l'écran est allumé, il devient un gâchis horrible.

Quelqu'un at-il compris l'ensemble des conditions pour une interprétation correcte de la couleur avec ansi shell + écran ou tmux? Qu'en est-il de se débarrasser de la couleur tout à fait? .. Y at-il d'autres alternatives en termes de processus en cours d'exécution à distance persistants et les attacher à emacs locales? ..

[1] http://blog.nguyenvq.com/2010/07/11/using-r-ess-remote-with-screen-in-emacs/

Était-ce utile?

La solution

Pour autant que je peux dire, l'écran nécessite les fonctions de votre terminal mode shell d'Emacs ne fonctionne tout simplement pas et ne peut fournir, simplement parce qu'il est pas un terminal traditionnel de caractère comme VT100. Donc, la question ne consiste pas à se débarrasser ou d'essayer d'interpréter les codes de couleur -. Il y a des capacités plus terminaux que l'écran a besoin pour fonctionner correctement

Par écran par défaut ne démarre pas même dans le mode shell d'Emacs, pour autant que je peux dire (il des erreurs en disant qu'il a besoin d'une capacité d'écran clair). Certains messages sur le web semblent suggérer la mise en TERM = xterm au travail autour, mais il est juste l'écran de duper en pensant que le terminal a les capacités de xterm, qu'il n'a pas.

Le terme et les modes ansi terme d'Emacs fournirait les capacités du terminal requis par l'écran, mais malheureusement, vous semblez avoir des problèmes avec ces modes eu.

Ce que je suggère plutôt serait de jeter un oeil à la commande « emacsclient -t » (partie d'Emacs), ce qui vous permet d'ouvrir un cadre local connecté à une instance existante Emacs d'une manière similaire à l'écran vous permet de se reconnecter à une instance d'écran précédemment créé. De cette façon, vous pourriez peut-être configurer un emacsclient sur votre ordinateur local pour se reconnecter sur TCP à une instance persistante Emacs à distance.

Autres conseils

Je ne pas utiliser l'écran, mais vous pouvez peut-être résoudre ce problème de votre .bashrc. J'ai un tas de code conditionnel là, véraison sur les fenêtres xterm, mais en laissant hors d'autres terminaux qui ne supportent pas. M-x shell définit la variable TERM stupide, de sorte que vous pouvez tester pour cela et définir la couleur en conséquence.

case "$TERM" in
dumb)
## non-color settings here
;;
xterm)
## color settings here
;;
*)
## default (maybe you want non-color here?)
;;
esac
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top