J'ai essayé d'ouvrir un fichier distant via Emacs via Tramp.
(require 'tramp)
(setq tramp-default-method "ssh")
Je reçois un message d'Emacs
Tramp: En attente d'invites de Shell distant
Emacs a été suspendu et n'a réagi à aucune action par la suite.
Emacs a été installé sur Windows; le fichier distant était sur une machine Linux.
Si le compte auquel vous vous connectez utilise une invite de commande très sophistiquée, il y a de fortes chances pour que ce soit ce qui fait tramp trip.
Connectez-vous en tant que root, puis entrez
PS1="> "
(Il s’agit d’une invite Shell classique (ZSH, BASH, younameit) normale, que tramp
comprendra) puis basculez vers le compte d’utilisateur et lancez emacs -q
(pour vous assurer que votre .emacs
ne cause pas ce désordre). et essayez de C-x C-f /Sudo:root@localhost:/etc/hosts
et voyez quoi.
Vous pouvez (non recommandé) également personnaliser l’expression rationnelle qui définit les attentes de tramp:
M-x customize-variable RET tramp-terminal-Prompt-regexp
Mon approche :
tramp-terminal-type
est définie sur "dumb" M-x customize-variable RET tramp-terminal-type
case "$TERM" in "dumb") PS1="> " ;; xterm*|rxvt*|eterm*|screen*) PS1="my fancy multi-line \n Prompt > " ;; *) PS1="> " ;; esac
Votre client Windows ssh est la clé ici, et la méthode Tramp 'ssh' est presque certainement fausse.
Si vous utilisez Cygwin, vous devez utiliser la méthode 'sshx' et probablement utiliser ssh-agent pour gérer l'authentification. Les détails sont ici: Utilisation de tramp avec EmacsW32 et cygwin, possible?
J'imagine qu'il en va de même pour tout client ssh autonome qui ne nécessite pas une installation complète de Cygwin, mais est utilise les DLL Cygwin. (J'en parle, parce que je suis sûr de me rappeler avoir vu une telle chose.)
Si vous utilisez PuTTY, vous souhaitez utiliser la méthode «plink», comme l'a souligné Alex Ott. Si le Wiki ne suffit pas, une recherche search here apportera probablement des solutions pour configurer cette approche.
Les autres alternatives que je peux suggérer sont:
Utilisez le Cygwin natif Emacs. Ce sera plus lent que NTEmacs, mais Tramp semble bien fonctionner avec la méthode 'ssh', et l'invite de mot de passe fonctionne également.
Hébergez une machine Linux VM sur votre machine Windows et lancez Emacs dessus. C'est un cercle assez volumineux, mais c'est ma méthode préférée d'utiliser Tramp lorsque vous travaillez sous Windows.
Aviez-vous vérifié Emacs wiki pour trouver une solution? ssh
est en PATH
? Il est également recommandé d'utiliser plink
sous MS Windows - voir la section "Méthodes en ligne" de la documentation de Tramp
En passant - si vous avez besoin de tramp
à Sudo
- Vous pouvez réellement Sudo sans tramp en utilisant sudoedit
.
J'utilise actuellement cette fonction bash:
erf () { Sudo_EDITOR="emacsclient -a emacs" sudoedit $@; }
C'est un défaut de vagabond.
La vraie solution consiste à empêcher le chargement de .bashrc
lorsque tramp
est utilisé. (Parce que maintenant, il s’agit de PS1, mais il peut s’agir de PATH, ou de toute autre chose que votre .bashrc
fera qui déplaira à tramp
...).
Cela peut être fait en demandant à ssh de définir une variable d’environnement et en la testant dans .bashrc
:
Ajoutez ceci à ~/.emacs
:
(require 'tramp-sh nil t)
(setf tramp-ssh-controlmaster-options (concat "-o SendEnv TRAMP=yes " tramp-ssh-controlmaster-options))
et cela au début de ~/.bashrc
:
if [ ! -z ${TRAMP-x} ] ; then
return
fi
Un autre défaut de tramp
est qu’il n’a pas de variable permettant de passer des arguments aléatoires à la commande ssh
; nous devons donc utiliser le tramp-ssh-controlmaster-options
.