Melhor maneira de editar arquivos Linux remotos no emacs a partir do Windows

Melhor maneira de editar arquivos Linux remotos no emacs a partir do Windows

Qual é a maneira mais rápida e confiável de trabalhar com arquivos por meio de uma máquina Linux com Emacs por meio de uma máquina host Windows? Preciso copiar e colar facilmente texto entre quadros do Emacs e usar todos os atalhos de teclado. Então, Putty e Cygwin estão fora de questão. Eu tentei o modo TRAMP, mas ele simplesmente trava quando tento conectar.

Responder1

Vagabundo é definitivamente a resposta certa. Se você tiver um problema com o Tramp, resolva-o. A maneira mais simples de fazer o Tramp funcionar no Windows é complink, componente de encapsulamento e script ssh do PuTTY. Cygwin sshé outra possibilidade.

Um problema que enfrentei é que plinkforça a TERMvariável de ambiente a xterm. Isso pode fazer com que seu .profileou outro script de login emita dados, pensando que está falando com um terminal, mas esses dados confundirão seus scripts. Normalmente você ligaria plinkcom a -Topção de dizer para não emular um terminal. No Emacs, use o plinkxmétodo Tramp, que força TERMno dumblado remoto:

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

No lado remoto, certifique-se de que seus arquivos de login não emitam nenhuma saída, como um prompt quando $TERMis dumb.

Responder2

Eu acho que quando você disse "putty e cygwin estão fora de questão", você quis dizer não usar o emacs diretamente do console Cygwin ou do shell PuTTY, mas usar o ntemacs (Emacs para Windows) com o tramp acessando suas caixas Linux.

A boa notícia é que isso é viável! :) Tenho usado uma combinação de ntemacs e Cygwin (para acesso ssh) com bons resultados.

Aqui está o que você precisa fazer.

  • Instale o Cygwin com o openssh instalado (se não tiver certeza, basta instalar tudo) e configure seu ssh para que você possa acessar suas caixas Linux sem senha, para o qual consulte este breve e agradávelartigo.

  • Copie cygwin-mount de Michael Cook e Klaus Berndl deemacswiki e coloque-o em ~/.emacs.d/plugins/cygwin-mount (ou em qualquer lugar onde seus pacotes emacs de terceiros estejam).

  • No seu .emacs, tenha algo como o seguinte para ativar o 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)))

  • Agora reinicie o emacs e o Cx Cf e digite "/sshx:your_host:" no minibuffer (observe os dois pontos finais). Se tudo correr bem, tramp/ssh deverá entrar em ação e você poderá ver os diretórios remotos.

Espero que isto ajude.

Responder3

Em vez de executar o Emacs localmente, por que não executá-lo remotamente na máquina Linux e exibi-lo em uma janela X local.

O que você vai precisar:

  • X Server para Windows: Algumas possíveis soluções gratuitas incluemXming,Cygwin/X (Eu sei, você disse não, Cygwin.)
  • Emacs no host Linux
  • Uma maneira de iniciar o comando remoto (algo como ssh)

As etapas básicas:

  1. Inicie seu servidor X no Windows
  2. Inicie o Emacs remotamente e exiba-o em seu servidor X local. Normalmente faço isso usando ssh emitindo o comando "ssh -X @ emacs". Alternativamente, você pode entrar na caixa do Linux, definir a variável DISPLAY ("export DISPLAY=:0") e então iniciar o emacs.

informação relacionada