続・Emacs x tramp でネットワーク上のファイルにアクセス

| コメント(0) | トラックバック(0)

Emacs x tramp で ChangeLog を複数端末で共有

実は普通に使う分には僕の場合 Terminal から ssh するんで Emacs からリモートサーバーを扱えなくても問題はなかったんです。だけど、サーバー目的にじゃなくて GTD 的に使いたいなって思って導入したわけです。

僕の普段から複数台 PC を使っているんですが、普段メモとかとる時面倒なんで YYMMDD.txt とか名前つけて保存しちゃうんですよ。そんな名前で保存してるから PC をいったりきたりしているうちに、どのファイルにメモしたのか、どこに保存したかとかどっちにメモ残したのかとかわからなくなっちゃうんですよね。そんなこんなで試行錯誤してたら ChangeLog がオールドな雰囲気もあるし良さげだなってなったわけです。なにせ一枚のテキストで保存していくし、日にちごとにまとめられるし。それに Emacs には標準でモードがついてるってのが決めてになりました。テキストなら検索も簡単ですしね。

それを使うとして、Mac と coLinux で別々に ChangeLog つけても結局前とそんなに変わらないわけですよね。そうすると、どこかにあるファイルにどちらからでもアクセス出来るのが好ましいんですよね。それじゃ、サーバーに置いた ChangeLog にアクセスするにはどうしたらいいって考えたんです。まず思ったのが SSH でログインして書くって方法です。でもこれはたかがメモを取るのに手間がかかりすぎます。それに SSH 繋ぎっぱなしってもの気持ち悪い。メモって手軽にできるからいいんであって、プロセスが面倒だと続かなくなりそうです。そんなこんなで悩んだあげく、そういえば前にディノの高原さんが Emacs でリモートファイルの編集をする方法書いてたなぁって思い出して tramp について調べたわけです。

これで晴れてリモート上の ChangeLog に Emacs からアクセス出来るようになったんですけど、このままだと普通に使えはするんですが、

C-x C-f /ssh:user@example.com:/path/to/file

でいちいちサーバーにアクセスしないといけないのでタイプする量が多くてお手軽ではない気がします。っと言うことで ChangeLog についても調べてみます。すると高林さんのサイトに自分で関数を作ってワンストロークで ChangeLog にアクセスする方法が載っていました。それをちょこっと修正して自分用にしたのが下記の lisp です。

(defun memo ()
  (interactive)
    (add-change-log-entry 
     nil
     (expand-file-name "/ssh:username@example.com:~/memo/diary.txt")))
(global-set-key "\C-cm" 'memo)

これを .emacs に書いておけば (PATH は自分の環境修正してくださいね) C-c m っていうキーバインドで一発アクセスできます。まぁサーバーにアクセスしに行くので十数秒はかかりますけど、でもこれだけでメモがお手軽になりました。ネットワークに繋がる環境にいれば(もちろんポートが開いている場所で)どこでもサーバーのメモに書きにいけちゃいます。

使用条件

  • Emacs に tramp がインストールされている & 設定してある
  • ローカル環境に ssh がインストールされている

参考サイト

感想

で長々書いてみた後に「それ SVK でいいんじゃね?」っと思った。毎回使うたびにリポジトリの mirror 作るのが面倒臭いかもしれないけど、仕事しているかぎり毎日同期させるような気がするんですよね。ん〜、まぁ当分はこのまま使い続けてみて、完全にローカルに開発環境を構築出来るような方法を探っていきたい。