web-dev-qa-db-ja.com

emacsでトランプを使ってリモートシェルを直接開く

Emacsのリモートマシンでシェルを実行するのに最適なのはTRAMPを使用することです(ローカルシェルでsshコマンドを使用しても私のニーズには対応しません)。ただし、最初にC-x C-fを使用してリモートファイルにアクセスし、次にそのバッファからM-x Shellを実行した場合にのみ、TRAMPシェルを実行する方法を知っています。ただし、TRAMPを使用してリモートマシンでシェルを開きたいのですが、beforeそのリモートホストでファイルを開くのですが、検索でその方法についての説明が見つかりません。それは可能ですか?

6
jmlorenzi

Default-directoryがリモートの場合、Trampが機能します。したがって、事前にリモートファイル(またはディレクトリ)を開く場合と同じように、変更することができます。

しかし、次のような小さなコマンドを書くことができます。

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

次に、M-x my-Shellを呼び出すことができます

5
Michael Albinus

diredを使用してリモートマシンにアクセスし、そこでシェルを開きます。

これが私が使用し、取得し、変更した関数です Tikhon Jelvissのemacs構成

(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>\""))))

例:

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

別のアプローチは次のとおりです。

  1. M-x cdは、バッファのデフォルトディレクトリを目的のリモートディレクトリに変更します
  2. M-x Shellを呼び出すと、リモートマシンでシェルが開きます
0
mark

マニュアルではあまり明確にされていませんが、C-u M-x Shellを使用すると、シェルバッファの名前を指定できます。andさらに重要なのは、あなたの場合、Default directoryを指定できることです。これは、Tramp /ssh:server:/my/pathのように文字列を取ることができます。

別の方法は、実際のファイルではなくdired(C-x d)を開くことです。ディレクトリからM-x Shellすると、シェルはdiredディレクトリのコンテキストで開きます。

0
Phil