2011-01-14 24 views
10

Me gustaría adjuntar pantalla o tmux dentro de emacs, en modo shell. A menudo me encuentro ejecutando emacs con procesos inferiores dentro de la pantalla en servidores remotos; sería bueno si pudiera cambiar el flujo de trabajo a emacs locales + TRAMP; sin embargo, la capacidad de volver a conectar sesiones persistentes es imprescindible. (Tal flujo de trabajo es particularmente útil para el análisis en R [1])Pantalla Gnu en el modo de shell de emacs: cómo corregir códigos de escape de color

El modo de caparazón es bastante deseable porque sigo encontrando fallas técnicas e incluso bloqueos cuando uso la combinación de Mx term o Mx ansi-term + pantalla + R. Sin embargo, parece que no puedo deshacerme del color ansi representado como códigos de escape en la pantalla cuando se ejecuta bajo el caparazón Mx. Cuando uso ansi-color-for-comint-mode-on, están bien, pero tan pronto como se enciende la pantalla, se convierte en un desastre horrible.

¿Alguien ha descubierto el conjunto de condiciones para la correcta interpretación del color ansi con shell + screen o tmux? ¿Qué hay de deshacerse de los colores en total? .. ¿Hay otras alternativas en términos de la ejecución de procesos remotos persistentes y adjuntarlos a emacs locales? ..

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

+1

@Seppo es correcto: shell-mode no puede hacer lo que usted quiere. Podría ser útil describir los problemas que está teniendo con 'M-x term' o' M-x ansi-term' y quizás podamos ayudar con eso. –

Respuesta

5

Por lo que yo puedo decir, pantalla requiere funciones del terminal que el modo de cáscara de Emacs simplemente no puede y no proporciona, simplemente porque no es un terminal de carácter tradicional como VT100. Por lo tanto, no se trata de deshacerse o tratar de interpretar códigos de color: hay más capacidades de terminal que Screen requiere para funcionar correctamente.

De forma predeterminada, la pantalla ni siquiera se inicia en el modo de shell de Emacs, por lo que puedo decir (se equivoca al decir que necesita una capacidad de pantalla clara). Algunas publicaciones en la web parecen sugerir que TERM = xterm funcione, pero es solo engañar a Screen para que piense que el terminal tiene las capacidades de XTerm, que no tiene.

Los modos de término y ansi-term de Emacs proporcionarían las capacidades de terminal requeridas por Screen, pero desafortunadamente parece que has tenido problemas con esos modos.

Lo que sugeriría en cambio sería echar un vistazo al comando "emacsclient -t" (parte de Emacs), que le permite abrir un marco local conectado a una instancia existente de Emacs de forma similar a la que permite Screen para volver a conectarse a una instancia de pantalla creada previamente. De esta forma, quizás pueda configurar un emacsclient en su computadora local para volver a conectarse a través de TCP a una instancia de Emacs remota persistente.

1

yo no utilizo la pantalla, pero tal vez puedas arreglar esto desde tu .bashrc. Tengo un montón de código condicional allí, activando el color para las ventanas xterm, pero dejándolo para otras terminales que no lo admiten. M-x shell establece la variable TERM en mudo, por lo que puede probar para eso y establecer el color en consecuencia.

case "$TERM" in 
dumb) 
## non-color settings here 
;; 
xterm) 
## color settings here 
;; 
*) 
## default (maybe you want non-color here?) 
;; 
esac 
Cuestiones relacionadas