2015年5月13日水曜日

Windows の Emacs で tramp

Emacs には tramp というものが入っている。

これがどういうものかというと、リモートマシンのファイルをあたかもローカルにあるかのように取り扱えるという便利なものだ。

昔はサードパーティーの elisp パッケージだったのが、いつからか標準で Emacs に含まれるようになっている。

バックエンドとして ssh を使っていて、UNIXライクな環境だと特に何も考えずに使えるようになっているのだが、例によって Windows だと使えるようにために設定が必要である。

参考にしたのはこのページ http://d.hatena.ne.jp/t0m0_tomo/20101208/1291782058

まず、バックエンドに PuTTY を使うとして、PuTTY へのパスを通す必要がある。PATH に PuTTY のフォルダを指定している人はこの設定はたぶん飛ばせる。

たとえばユーザ xxx が自身の "ドキュメント" フォルダに PuTTY のフォルダを置いているとすると、実際のパスが "C:\Users\xxx\Documents\PuTTY" とかになっているので、~/.emacs.d/init.el に以下を設定する。
(setenv "PATH"
    (concat
     (getenv "PATH")
     ";" "C:\\Users\\xxx\\Documents\\PuTTY"))

あくまで例示なので、自分のとこではパスが違うとかそういうのは適当に自分の環境に合わせて読み替えてほしい。

これで Emacs から PuTTY を使う準備ができた。

次は tramp でPuTTY の plink.exe を使う設定。
(require 'tramp)
(setq tramp-default-method "plink")
(setq tramp-shell-prompt-pattern "^[ $]+")

これでいける。

あとは C-x C-f でファイルを開くときに "/hostname.example.com:~" とかいう感じで指定すると hostname.example.com のホームディレクトリが参照できる。

ちなみにこの hostname.example.com の部分は PuTTY でのセッション名でもいける。セッション名の方がリモートユーザ名とかあらかじめ設定できて便利だと思う。ただ、日本語のセッション名を入れたら tramp の方が認識しなかった。ホスト名っぽいセッション名にしておいた方が無難な模様。



0 件のコメント :

コメントを投稿