web-dev-qa-db-fra.com

Ouvrez directement une coque distante avec un tramp dans Emacs

Je trouve que le meilleur pour exécuter mes obus dans des machines distantes dans Emacs utilise un tramp (à l'aide de la commande ssh dans une coque locale ne fonctionne pas pour mes besoins). Cependant, je sais seulement comment exécuter un shell de tramp si je visitant d'abord un fichier distant avec C-x C-f Et puis faire M-x Shell à partir de ce tampon. Cependant, je voudrais ouvrir une coquille dans une machine distante, à l'aide du tramp, avant Ouverture de n'importe quel fichier sur cet hôte distant, mais ne trouve aucune explication sur la manière de faire cela sur mes recherches. Est-il possible de faire ça?

6
jmlorenzi

Tramp entre en jeu lorsque le répertoire par défaut est à distance. Vous pouvez donc le changer, comme vous le faites avec l'ouverture d'un fichier distant (ou un répertoire) à l'avance.

Mais vous pouvez écrire une petite commande comme ceci:

(defun my-Shell () (interactive) (let ((default-directory "/ssh:user@Host:")) (Shell)))

Ensuite, vous pouvez appeler M-x my-Shell

5
Michael Albinus

J'utilise dired pour accéder à la machine distante et ouvrir une coque là-bas.

Voici la fonction que j'utilise, prise et modifiée à partir de Tikhon Jelviss 'Emacs Configuration :

(defun anr-Shell (buffer)
  "Opens a new Shell buffer where the given buffer is located."
  (interactive "sBuffer: ")
  (pop-to-buffer (concat "*" buffer "*"))
  (unless (eq major-mode 'Shell-mode)
    (dired buffer)
    (Shell buffer)
    (sleep-for 0 200)
    (delete-region (point-min) (point-max))
    (comint-simple-send (get-buffer-process (current-buffer)) 
                        (concat "export PS1=\"\033[33m" buffer "\033[0m:\033[35m\\W\033[0m>\""))))

Exemple:

(anr-Shell "/vagrant@localhost#2222:/vagrant/")
2
mandark

Bien que cela ne soit pas trop clair dans le manuel C-u M-x Shell vous permet de spécifier le nom du tampon shell ,( et Plus important encore dans votre cas vous permet de spécifier le Default directory, qui peut prendre une chaîne juste comme le tramp /ssh:server:/my/path.

Une alternative consiste à ouvrir DIRED (C-x d) plutôt qu'un fichier réel, si vous M-x Shell Dans le répertoire, le shell s'ouvre avec le contexte du répertoire directeur.

0
Phil