-

TRAMP on Meadow

リモートのサーバ(coLinuxでも何でも)に開発環境を置くとき、そこにあるプログラムをどうやっていじるかという方法について。

とりあえず思いつく方法。

  • ローカルでプログラムを書いて都度サーバにアップする
  • sshでログインしてターミナルエミュレータの中でエディタ動かして書く
  • Samba入れてネットワークドライブで

1番目はエディタが自分のとこにあって好きなようにできるけど、ローカルとリモートでファイルの同期するのが面倒すぎなので、不採用です。2番目のリモートで直接エディットするやり方は、vim使いなら設定(.vimrc)だけコピーしたら全く困らないような気がする。でもvim使いじゃないし。ターミナルでemacs -nwはどうか。でもなんかエディタ手元に置きたい的な欲求があるなぁ。Sambaが妥当かと思うんだけどなんとなく敬遠気味で。

とかぐだぐだ言ってるけど、要は単に興味で、MeadowTRAMPをいってみることにしました。Meadow(Emacs)からリモートのファイルを透過編集できる。

で、試行錯誤した設定がこれ。

;;{{{ Tramp

(when (require 'tramp nil 'noerror)
 (cond ((eq system-type 'windows-nt)
        (setq tramp-default-method "plink"
              tramp-completion-without-shell-p t)
        (modify-coding-system-alist 'process "plink" 'utf-8))
       (t
        (setq tramp-default-method "scp")))
 (add-to-list 'tramp-remote-path "~/bin"))

;;}}}
  • modify-coding-system-alistはサーバに合わせて適当に。
  • tramp-remote-pathに~/binを入れたのは、ここにmimencodeを置いたから。mimencodeが見つからない場合Trampがuuencodeを使うらしく、その場合文字化けしたので。

ファイルを開くには

C-x C-f /dev:~/foo/bar.sh

のようにする。"dev"はホスト名を書くところで、PuTTYだとあらかじめその名前でセッションを作っておく必要がある。No Passphraseで入れるようにしている。CygwinのOpenSSH派だとか言ったばかりだけどMeadowからなので、ここは柔軟性を発揮してplinkでいきます。

最初の/dev:~/...と打つのが面倒だという話もあるなぁと思ったけどいったんリモートのファイルを開いたら次から履歴をM-pで無問題。session.elも使ってるので、前のセッションのC-x C-fの履歴をM-pできるから、実際問題/dev:~/をまんま打つのは最初だけだった。

C-x C-fのあとはローカルのファイルシステムみたいにTAB連発で補完できたりもするし、diredもできるしいい感じです。

唯一気になる点として初回のファイルオープンだけかなりもたつきます。10秒くらい。2回目以降はそれほどでもないけど。
しばらくこれで生活してみます。