Emacsのリモートマシンでシェルを実行するのに最適なのはTRAMPを使用することです(ローカルシェルでssh
コマンドを使用しても私のニーズには対応しません)。ただし、最初にC-x C-f
を使用してリモートファイルにアクセスし、次にそのバッファからM-x Shell
を実行した場合にのみ、TRAMPシェルを実行する方法を知っています。ただし、TRAMPを使用してリモートマシンでシェルを開きたいのですが、beforeそのリモートホストでファイルを開くのですが、検索でその方法についての説明が見つかりません。それは可能ですか?
Default-directoryがリモートの場合、Trampが機能します。したがって、事前にリモートファイル(またはディレクトリ)を開く場合と同じように、変更することができます。
しかし、次のような小さなコマンドを書くことができます。
(defun my-Shell () (interactive) (let ((default-directory "/ssh:user@Host:")) (Shell)))
次に、M-x my-Shell
を呼び出すことができます
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/")
別のアプローチは次のとおりです。
M-x cd
は、バッファのデフォルトディレクトリを目的のリモートディレクトリに変更しますM-x Shell
を呼び出すと、リモートマシンでシェルが開きますマニュアルではあまり明確にされていませんが、C-u M-x Shell
を使用すると、シェルバッファの名前を指定できます。andさらに重要なのは、あなたの場合、Default directory
を指定できることです。これは、Tramp /ssh:server:/my/path
のように文字列を取ることができます。
別の方法は、実際のファイルではなくdired(C-x d
)を開くことです。ディレクトリからM-x Shell
すると、シェルはdiredディレクトリのコンテキストで開きます。