12

これはおそらくやや風変わりな質問です。私はtrampを使用してリモートファイルを編集しますが、他の作業のためにそのリモートマシンにSSH接続するいくつかの端末も開きます(emacs内でsshシェルを実行する際に問題が発生しました)。

ターミナル作業中にファイルを編集したいことがよくあります。現在の手順では、ファイル名をコピーしてから、emacs trampを使用してそのファイルを開きます(ファイルパスをtramp形式で取得した後)。これは、迅速な編集には手間がかかりすぎ、パス処理部分でエラーが発生しやすくなります。

問題は、ファイル名を取得するリモートsshセッションでコマンドを実行し、それをトランプ形式に変換して(これは簡単な部分です)、ローカルコマンド(などemacsclient blahblahblah)を実行して、トランプを使用してリモートファイルを編集できるようにすることです。私の地元のemacs?

十分にはっきりしているかどうかはわかりません。リモートマシン(ターミナルまたはxセッションのいずれか)でemacsを実行したくないのですが、次のように、リモートプロンプトからローカルemacsにファイルを送信したいと思います。

user@remote-machien ~/ $ run_local_emacs somefile
# then the file "/ssh:user@remote-machine/:/home/user/somefile" shows up 
# in my local emacs
4

5 に答える 5

13

(ローカルソケットだけでなく)tcp接続を使用するようにemacs-serverを設定してから、リモート側でemacsclientにそのtcp接続に接続するように指示できます。

あなたの.emacsで

(setq server-use-tcp t)
(setq server-host "name_of_local_machine")
(server-start)

そして、リモート側で:

emacsclient -f ~/.emacs.d/server/server /`hostname`:/path/to/local/file

上記の呼び出しemacsclientは、「ローカル」マシンで実行されているEmacsの「リモート」マシンにローカルなファイルを表示します。emacsclient明らかに、呼び出しを簡単にしたい任意の種類のスクリプトでラップすることができます。

server-auth-dirホームディレクトリがリモートマシンに表示されない場合は、次のように変数をカスタマイズする必要があります。

(setq server-auth-dir "/some/path/visible/on/both/machines")

その他のドキュメントについては、Emacsclientオプションを参照してください。

于 2010-02-09T19:58:47.567 に答える
1

http://www.emacswiki.org/emacs/AnsiTermHints#toc4もあります

ローカルであるかのようにトランプがリモートファイルを開くことができるリモートディレクトリ追跡を組み込んでいます

于 2011-03-16T16:10:44.950 に答える
0

urxvt(優れたターミナルエミュレーター)を使用して、リモートマシンにemacsclientがインストールされていない場合でも、これを行うためのperl拡張機能を作成できます。

于 2010-02-10T09:52:08.613 に答える
0

おそらくあなたはすでにこれを知っていて、それはあなたにとってうまく機能しませんが、私がそのようなことをする必要があるとき、TRAMPのファイル名の補完は私が代替案を探すことを考えたことのないほど十分に役に立ちました。

C-xC-f/ssh:remotehost:/TabTab

これは、SSHキーまたは同様のパスワードなしのアクセスが設定されている場合に最適に機能しますが、すでに設定されているようです。

于 2015-09-28T18:21:58.847 に答える
0

ここで行っているのは、リモートからローカルへのリバースssh接続であり、ローカルでemacsclientを実行しています。

me@remote-machine$ ssh -f me@local-machine emacsclient /ssh:remote-machine/$(realpath my-file-name)
于 2015-10-07T09:01:40.590 に答える