リモートサーバーにsshし、ローカルemacsを使用してファイルを編集する方法


8

ローカルコンピューターにインストールされているemacsを使用して、リモートサーバーにあるリモートファイルにアクセスする方法はありますか?私はグーグルし、TrampModeを使用する必要があることを発見しましたが、正確なファイルパスを知る必要があります。リモートサーバーへのssh接続を開き、そこから自分のコンピューターのローカルemacsでファイルを開く方法はありませんか?

回答:


5

これにはさまざまな方法がありますが、一般的には、この問題を逆向きに進めています。emacs構成をリモートマシンにコピーし、編集しているファイルに対してローカルのemacsを使用します。

「これを行うさまざまな方法」は2つのカテゴリーに分類されます。1つ目は、sshfs、一部のヒューズファイルシステム、samba、nfs、またはその他のマウントシステムを使用してリモートドライブをローカルにマウントし、マシンにファイルレベルのアクセスを提供する方法です。2つ目は、リモートシステムにログインして閲覧し、それらのコピーをローカルの一時ファイルに転送して編集し、元に戻すことでファイルを操作するさまざまなプログラムです。いくつかのプログラムはそのプロセスをかなりシームレスに見せますが、それはハックです。


1
「いくつかのプログラムはそのプロセスをかなりシームレスに見せますが、それはハックです。」:それがTramp(現在Emacsに同梱されています)の目的です。これはハックではなく、リモートファイルを操作する自然な方法です。
Gilles「SO-邪悪なことをやめなさい」

@ギレス:私は何も知らないTrampので、私の「ハッキング」の申し立ては適用する必要がないはずです。特に、「エディターで開く」などのメニュー項目があるさまざまなファイルマネージャープログラムについて考えていました。これらはファイルを開くために機能しますが、通常、ファイルのコピー、変更、コピーバックなどを必要とする方法で脆弱です。エディターを閉じる前の中間ファイルの保存は、上流にプッシュされないことが多く、扱いにくい方法になります。ファイル。Tramp@starcorn の制限を回避する方法を知っている場合は、必ず別の答えを追加してください。
カレブ

1
Trampを使用すると、エディターが作業を行うので、保存などのときにプッシュすることがわかります。理想的な解決策はemacsserverとsshを相互運用させることですが、それは難しいことです。私が提供するはずだった2つの回避策は、sshfsとeshellで、どちらもすでに述べました。
Gilles「SO-邪悪なことをやめなさい」

2

または、emacsを開いてeshellを実行し、次のようにリモートマシンにcdします。

cd /hostname:~

次に、シェルコマンドを実行し、目的のファイルに移動して開きます。

find-file filename

2

私はトランプがあなたが探しているものだと思います。Diredモードを使用して、リモートディレクトリを参照し、目的のファイルを探すことができます。

たとえば/etc/、リモートマシンremでファイルを探している場合は、次のようにします。

  • emacsを開く
  • ヒット C-x C-f
  • すでに存在するパスを削除する
  • 入力/rem:/etc/してエンターキーを押し。

次のような出力が得られます。

/ssh:rem:/etc:
total 1460
drwxr-xr-x 141 root root    12288 Aug 12 06:46 .
drwxr-xr-x  23 root root     4096 Jul 18 23:48 ..
drwx------   6 root root     4096 Nov 17  2009 .bzr
-rw-------   1 root root      749 Jul 18 23:30 .bzrignore
-rwx------   1 root root    10015 Aug 12 09:17 .etckeeper
drwxr-xr-x   3 root root     4096 Aug  6 00:47 .java
-rw-------   1 root root        0 Nov 17  2009 .pwd.lock

次に、たとえば矢印キーを使用して、編集するファイルを見つけます。カーソルをファイルの上に置いてEnterキーを押すと、編集できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.