2011-10-20 8 views
9

/マルチは私のために働いていましたが、今は消えてしまいました。Emacs trampを使用してリモートホストにssh接続し、別のユーザーとしてファイルをアドホックベースで編集するにはどうすればよいですか?

私は何をしたいことは、私の夢の世界では、次のとおりです。

/MYUSERする@ remotehostの:須藤:anotheruser:/いくつかの/パス/に/ファイル

...とIDOモードの仕事を持っています。

ここで重要なことは、 'myuser'、 'remotehost'と 'anotheruser'はすべて非常に特別なことです。私は遠隔ホストの巨大な配列を使います。異なるユーザー。

何を追加する必要がありますか?また、emacsを何度も再読み込みせずにテストするにはどうすればよいですか?

+0

もっと正確に言えますか: 'tramp-completion-function-alist'を使いましたか?あなたの設定は何ですか?たぶん次の投稿はあなたを助けるかもしれません:http://stackoverflow.com/questions/95631/open-a-file-with-su-sudo-inside-emacs – Renaud

+1

このスレッドは完全な背景を提供します: http:// lists。 gnu.org/archive/html/tramp-devel/2011-10/msg00014.html –

答えて

8

this commitの時点で、TRAMPはアドホックマルチホップを再びサポートします。

大雑把に言えば、あなたはこのようにそれを使用します。

/ssh:[email protected]|sudo:[email protected]:/some/file 

私は恥である、まだそれはido-modeで確実に動作するようになっていないが、それは何もないよりずっと良いです! :-)

+2

不思議な人のために、Emacs 24に含まれています。また、http://stackoverflow.com/a/16408592/324105 – phils

+0

を確認してください。これはEmacs 24.3で動作しています。特別な設定は必要ありません。明確化のポイント:が〜/ .ssh/config(Hostで)で定義されたエイリアスである場合、両方の場所でのローカルエイリアスを使用します。sudoの実際のホスト名に変換する必要はありません。これをdired/dired +に使用して、リモートディレクトリとeshellを開くこともできます。 – mike

0

次のコードを助けるかもしれない:

(defun find-file-as-root() 
    "Find a file as root." 
    (interactive) 
    (let* ((parsed (when (tramp-tramp-file-p default-directory) 
        (coerce (tramp-dissect-file-name default-directory) 
          'list))) 
      (default-directory 
      (if parsed 
       (apply 'tramp-make-tramp-file-name 
         (append '("sudo" "root") (cddr parsed))) 
       (tramp-make-tramp-file-name "sudo" "root" "localhost" 
              default-directory)))) 
     (call-interactively 'find-file))) 

を私は自分の.emacsファイルにそれを持っていた、そしてここから来ているようだ:http://atomized.org/2011/01/toggle-between-root-non-root-in-emacs-with-tramp/

私は広範囲にそれを使用していないが、それはのように思えますそれは正しい方向の一歩です。