La mejor manera de editar archivos remotos de Linux en emacs desde Windows

La mejor manera de editar archivos remotos de Linux en emacs desde Windows

¿Cuál es la forma más rápida y confiable de trabajar con archivos a través de una máquina Linux con Emacs a través de una máquina host de Windows? Necesito poder copiar y pegar texto fácilmente entre marcos de Emacs y usar todos los atajos de teclado. Entonces, Putty y Cygwin están fuera de discusión. Probé el modo TRAMP pero simplemente se bloquea cuando intento conectarme.

Respuesta1

Tramp es definitivamente la respuesta correcta. Si tienes algún problema con Tramp, solucionalo. La forma más sencilla de hacer que Tramp funcione en Windows es conplink, componente de secuencias de comandos y túneles ssh de PuTTY. La de Cygwin sshes otra posibilidad.

Un problema con el que me encontré es que plinkobliga a la TERMvariable de entorno a xterm. Esto puede hacer que su .profilescript de inicio de sesión u otro emita datos, pensando que está hablando con una terminal, pero estos datos confundirán sus scripts. Por lo general, llamaría plinkcon la -Topción para indicarle que no emule una terminal. En Emacs, utilice el plinkxmétodo Tramp, que obliga TERMa dumben el lado remoto:

(if (eq system-type 'windows-nt)
    (setq tramp-default-method "plinkx"))

En el lado remoto, asegúrese de que sus archivos de inicio de sesión no emitan ningún resultado, como un mensaje cuando $TERMes dumb.

Respuesta2

Supongo que cuando dijiste "Putty y cygwin están fuera de discusión", no querías usar emacs directamente desde la consola Cygwin o el shell PuTTY, sino usar ntemacs (Emacs para Windows) con tramp accediendo a tus cajas de Linux.

¡La buena noticia es que esto es factible! :) He estado usando una combinación de ntemacs y Cygwin (para acceso ssh) con buenos resultados.

Aquí está lo que tú necesitas hacer.

  • Instale Cygwin con openssh instalado (si no está seguro, simplemente instale todo) y configure su ssh para que pueda acceder a sus cajas de Linux sin contraseña, para lo cual consulte este breve y sencilloartículo.

  • Copia de cygwin-mount de Michael Cook y Klaus Berndl deemacswiki y colóquelo debajo de, por ejemplo, ~/.emacs.d/plugins/cygwin-mount (o en cualquier lugar donde se encuentren sus paquetes de emacs de terceros).

  • En su .emacs, tenga algo como lo siguiente para activar cygwin-mount.

(add-to-list 'load-path "~/.emacs.d/plugins/cygwin-mount")

(defvar cygwin-bin-dir
  "c:/cygwin/bin/"
  "*Directory of Cygwin bin.")

(when (eq (window-system) 'w32)
  (progn
    (setenv "PATH" (concat cygwin-bin-dir ";" (getenv "PATH")))
    (setq exec-path (cons cygwin-bin-dir exec-path))
    (require 'cygwin-mount)
    (cygwin-mount-activate)))

  • Ahora reinicie emacs y Cx Cf y escriba "/sshx:your_host:" en el minibúfer (observe los dos puntos al final). Si todo va bien, tramp/ssh debería activarse y debería poder ver los directorios remotos.

Espero que esto ayude.

Respuesta3

En lugar de ejecutar Emacs localmente, ¿por qué no ejecutarlo de forma remota en la máquina Linux y mostrarlo en una ventana X local?

Que necesitarás:

  • X Server para Windows: algunas posibles soluciones gratuitas incluyenxming,Cygwin/X (Lo sé, dijiste que no, Cygwin).
  • Emacs en el host Linux
  • Una forma de ejecutar el comando remoto (algo así como ssh)

Los pasos básicos:

  1. Inicie su servidor X en Windows
  2. Inicie Emacs de forma remota y haga que se muestre en su servidor X local. Normalmente hago esto usando ssh emitiendo el comando "ssh -X @ emacs". Alternativamente, puede iniciar sesión en el cuadro de Linux, configurar la variable DISPLAY ("exportar DISPLAY=:0") y luego iniciar emacs.

información relacionada