
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 plink
força a TERM
variável de ambiente a xterm
. Isso pode fazer com que seu .profile
ou outro script de login emita dados, pensando que está falando com um terminal, mas esses dados confundirão seus scripts. Normalmente você ligaria plink
com a -T
opção de dizer para não emular um terminal. No Emacs, use o plinkx
método Tramp, que força TERM
no dumb
lado 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 $TERM
is 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:
- Inicie seu servidor X no Windows
- 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.