Tuesday, March 10, 2015

tramp + shell のリモートシェルで emacsclient を使うには

Emacs で tramp をつかっているときにM-x shell で起動するとリモートホストのシェルがあたかもローカルのシェルであるかのように快適に利用できるのだけど、一つ欠点があって、そこからのコマンドラインから起動するエディターに快適なのがあまりない。
emacsclient をリモートソケット経由で操作するハックとかいろんな工夫が行われているっぽいんだけどしっくりこないのでちょっとしたクイックハックしてみた。

基本的にはリモート側でemacsclientの代わりになるスクリプトを作ってあげてEDITOR環境変数に指定してあげればよい。

そしてそのスクリプトの内容はローカルのホストにsshでemacsclientを起動するようにして、trampの/ssh:hostname:/path/to/file 形式で指定してあげればよい。

こんな感じ

#!/bin/bash
SERVER=your-local-hostname
ssh $SERVER emacsclient /ssh:$HOSTNAME:$(readlink -f "$1" )

sshのコネクション張りっぱなしでパスワード聞かないこと前提。


#!/bin/bash
SERVER=junichi2.i
ssh $SERVER emacsclient /ssh:$HOSTNAME:$(readlink -f "$1" )

No comments:

Post a Comment