改この広告は、90日以上更新していないブログに表示しています。2011-02-25emacsで別のホストにある違うユーザーが所有するファイルを編集するお仕事で作業をしていると、踏み台サーバの裏側のマシンにあるスクリプトをいじってデータの統計をとって結果を見る、というようなことをやらないといけないことがよくある。ややこしい作業であれば小さなデータを手元に用意してそこでスクリプトを作って、うまく動いてからscpでサーバ側にコピー、ということをやるのだが、ちょっとした作業であればリモートのファイルを直接編集してしまいたくなることも多い。リモートマシンにはemacsが入っていなかったり、入っていても.emacsの設定がいろいろ足りなかったり(iswitchb-modeとgoto-lineがないと辛くて死にそう)するので、手元にあるemacsを使ってリモートにあるファイルを直接編集する方法が望まれていた。簡単なケースであればsshfsを使えばいいのだが、リモートマシンにログインした後、さらにsudoで別のユーザーにならないといけない、というような場合にはsshfsでは対応できない。www-dataの権限でファイルをちょっと書き換える、とか。podeを使ってみることにした。modeというのがなんなのかは私もよくわかっていないのだが、リモートのファイルを手元のemacsで開いたり、別のユーザー(rootとか)としてファイルを開くことができる便利な仕組みのようだ。新しめのEmacsだとデフォルトで入っているので、インストール作業などは特に必要ない。今回のケースでは、踏み台に関してはsshの方で解決し、1段でログイン出来る状態にしてあるものとする。modeのプロクシの設定がよくわからないので、あまり複雑なことはしたくない)このようなケースでは、あらかじめ.emacsの方に設定が必要であり、tramp-default-proxies-alistというリストをいじらなければならない。"/sshx:%h:"))tramp-default-proxies-alistに渡すリストは、ホスト名、ユーザー名、プロクシの3つ組である。ホスト名かユーザー名のいずれか(両方?)がマッチしたプロクシが使われる。"/sshx:%h:"というのは、sshxという手段(sshのちょっと特殊な場合)で%h(この場合だとexample.jp)にログインしろという事を意味している。C-fでファイルを開くときに/sudo:hoge@example.jp:/path/to/fileと打つと、sudo用のパスワードを聞かれるので、それを入力すると、example.jpでhogeユーザーとしてファイルを開くことができる。"/sshx:%h:"))となっていれば良さそうに思えるのだが、実際にはそれではダメなようだ。理解が足りないらしい。add-to-listは複数書いた場合、下の方に書いた条件から試していって、最初にマッチしたものを使う、という仕様のようだ。設定する順番を間違えると、思っていたのと違う挙動をして混乱するかもしれないので、注意する必要がある。modeは正直ちょっと分かりにくくて、人にはあまりおすすめしづらいのだが、リモートのファイルを手元のemacsで編集できるのはとても便利である。一度使うとやめられない。はてなブログをはじめよう!tkngさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。