web-dev-qa-db-ja.com

emacsとsshでリモートファイルを開く最良の方法は何ですか

ssh [email protected]でリモートマシンに接続します。リモートマシンでファイルを開く必要がある場合、たとえば、

emacs /usr/share/nginx/html/index.html

シェルでindex.htmlファイルを開きます。一部のemacsコマンドは機能するが、他のコマンドは機能しないことに気付きました。たとえば、C-wは機能しません。 M-<は機能しません。これを修正するにはどうすればよいですか?また、emacsおよびsshを使用する最良の方法は何ですか?

この質問 が見つかりましたが、混乱しました。

66
Zeynel

私は通常、ローカルのEmacsインスタンスからリモートファイルを開くことを好みます。

ローカルマシンでEmacsを実行している間、sshでリモートファイルを開くことは、わずかに 異なる構文

Sshの場合、C-x C-fと入力できます。ここで、minubufferに/ssh:user@Host:/path/to/fileと入力します(パスの入力を開始するとタブ補完が機能します。先頭の/文字にも注意してください)。完全な ドキュメントはこちら を参照してください。

あなたの例では、それは次のようになります:

C-x C-f /ssh:[email protected]:/usr/share/nginx/html/index.html

ローカル設定やインストールされたパッケージなどを使用しながら、Emacsでsshを介してリモートファイルを編集できるようになりました。

125
Carl Groner

上記の答えに追加するために、頻繁に使用するマシンのショートカットを作成できます。

(defun connect-remote ()
  (interactive)
  (dired "/[email protected]:/"))

これにより、リモートマシンでdiredバッファーが開きます。ローカルバッファと同じように、このバッファをナビゲートできます。

リモートマシンにsshキーを設定している場合、パスワードを入力する必要さえありません。

リモートマシンがたくさんある場合は、各機能にわかりやすい名前を付けることができます。 connect-cupcakeconnect-KitKatおよび完了にsmexパッケージを使用します。

23
abo-abo

また、「ショートカット」に関する@ abo-aboの投稿に追加するには-

Emacsブックマークを使用リモートファイルまたはディレクトリにアクセスすると、通常どおりブックマークを作成します。次に、C-x r bを使用して、名前を(補完付きで)指定したリモートブックマークにジャンプします。

Bookmark + を使用すると、リモートブックマークが*Bookmark List*で特別に強調表示されるため、より多くを認識できます。簡単に。また、suまたはSudoroot)がアクセスする必要があるリモートブックマークは、強調表示が異なります。

Dired + を使用すると、Diredに含まれるリモートディレクトリにアクセスして、複数のリモートファイルまたはディレクトリをすばやくブックマークすることもできます。 、それらをマークし、C-x bを押します。ブックマークに名前を付ける必要はありません。ファイルにちなんで名前が付けられます。リモートファイルへの移動にこれらのブックマークを使用したことがない場合でも、Bookmark +tags = ファイルを整理し、ファイルのサブセットを操作します。

Icicles を使用すると、コマンドを使用してブックマークにジャンプするたびに、完了候補をそれらに絞り込むことができます完了時にC-M-@を押すとリモートになります。

17
Drew

元の投稿者は、rootユーザーとしてリモートファイルを開くことに関心を示しました。これは次のコマンドで実行できます。

C-x C-f /ssh:you@remotehost|Sudo:remotehost:/path/to/file RET

詳細なドキュメントはこちらにあります: https://www.emacswiki.org/emacs/TrampMode#toc14

5
Alex

リモートマシンに焦点を当てた簡単な回答:

すべてのemacsをリモートマシンで実行する予定の場合は、

ssh -X username@hostname

次に、リモートセッションでemacsを実行し、ローカルマシンに表示します。古い質問ですが、完全を期すためにこれを投げ入れたかったのです。確かにいくつかのxhost/X構成の問題がありますが、多くのネットワークではこれはすぐに動作します!

3
JimLohse

emacsのSSHモード はあなたが探しているものです。

設定したら、実行するだけです

M-x ssh RET hostname RET

次に、パスワードの入力を2回要求します(コマンドラインに1回、ファイルのロードに1回)。

ほとんどの場合、他のシェルと同様に扱うことができます(非対話型でいくつかの小さな違いがありますが、それだけです)。

どのディレクトリにいるかを追跡するので、見ているディレクトリからファイルを開きたい場合は、正しいディレクトリから自動的に起動し、ファイル名を入力するだけです。

Emacs Wiki にも詳細があります。

1
Drake Sobania