2010-11-10 18 views
5

Estoy usando emacs-snapshot con el paquete ssh.el, siguiendo las instrucciones del manual ess.¿Cómo puedo abrir una ventana x desde emacs ess cuando ejecuto R en un servidor?

Hay algunas formas de abrir una sesión de R, pero esto es cómo lo hago:

  1. emacs abiertas
  2. Cx Cf /server:dir/file.R esto me pone en ESS [ S] modo
  3. Tipo 'trama (1)'
  4. Cc Cn para funcionar
  5. emacs pide para el inicio de directorio, y elijo el/servidor: dir/
  6. me gustaría que una figura para que aparezca pero no.

Esto tampoco funciona cuando se usa ess-remote en modo shell o vagabundo, pero funciona si configuro el directorio inicial en mi escritorio local.

Cualquier consejo muy apreciado. Mi solución actual es imprimir el archivo a PDF y luego abrir el pdf en modo DocView, pero esto requiere unos pocos pasos adicionales y es lento.

+0

una respuesta, pero no funciona porque el comando ssh no incluye la opción '-X' para activar el reenvío de X sobre la conexión. –

+0

esa es la respuesta. Simplemente no pensé en eso porque configuré un alias para 'servidor ssh', así que solo tengo que escribir 'servidor', así que tendré que configurar un nuevo alias que incluya el -x. ¡Gracias! –

+2

Como alternativa, puede codificar el reenvío X11 en el sistema '/ etc/ssh/ssh_config' o en su' ~/.ssh/config' local - ver 'man ssh_config'. Además, para ser pedante, mi respuesta incluía 'ssh -X'. –

Respuesta

10

lo hago al revés:

  • ssh -X some.server.com para conectarse a un servidor remoto con el reenvío de x11.

  • emacsclient -nw para reiniciar una sesión de Emacs que ya está ejecutando

  • plot(cumsum(rnorm(100))) en I como de costumbre

A continuación, aparece la ventana de la trama en la máquina inicial I ssh 'ed lejos de.

Editar: Como seguimiento al comentario: Esto funciona para cualquier emacs, ya sea emacs o emacs-snapshot. Durante mucho tiempo usé (server-start) en el ~/.emacs pero ahora prefiero que (solo una vez) lauch emacs --daemon después de lo cual puedo conectarme a través de emacsclient (que también existe como emacsclient-snapshot). Realmente me gusta esto, me da Emacs alrededor de R en una sesión persistente que conecto, desconecto y vuelvo a conectar.

+0

Gracias por la sugerencia. ¿Cómo comienzas y paras emacs sin terminar tu sesión R? Yo uso emacs -unos pocos, pero me resulta mucho más fácil trabajar y configurar emacs-snapshot. –

+4

@David, si inicia emacs en el servidor utilizando la opción de daemon, R seguirá ejecutándose cuando cierre el cliente de emacs. Esto es porque emacs (y, por lo tanto, R) se ejecutan como servicios. Después de Dirk me explicó esto. He estado haciendo esto para conectarme al ESS que se ejecuta en EC2. He dejado de llevar mi computadora portátil a casa ahora que puedo conectar otro cliente de emacs a la misma sesión desde la máquina de mi casa. –

+0

Esto se ve muy interesante y útil. Voy a analizar esto, gracias por volver a enfatizar la sugerencia de Dirk. –

2

Seleccioné la respuesta de Dirk porque me dirigió en la dirección correcta, y especialmente para reducir la energía de activación requerida para visualizar mis datos, pero aquí le voy a dar los detalles de cómo hice que esto funcione en mi escritorio .

1) juego pares de claves SSH (que había hecho previamente esta, full instructions for Ubuntu here)

mkdir ~/.ssh 
chmod 700 ~/.ssh 
ssh-keygen -t rsa 
ssh-copy-id [email protected] 

2) incluir lo siguiente en ~ /.ssh/config

Host any_server_nickname 
HostName hostname 
User username 
ForwardX11 yes 

3) emacs abiertos en la máquina local

4) Cx Cf

5) /any_server_nickname:dir/file.R para los archivos en el directorio home o/any_server_nickname:/ruta /to/file.R

6) trama (1)

7) Cx Cb para evaluar tampón entero.

alt text

No
+0

En el paso 4, ¿está abriendo emacs localmente o en el servidor remoto? –

+0

No me había encontrado con 'ssh.el' - ¿qué hace' ssh.el' que el '' tramp-mode' estándar (que se incluye con Emacs) no funciona? –

+0

@JD Long: paso 4 Estoy abriendo emacs localmente –

Cuestiones relacionadas