[Emacs] Emacs で設定ファイルを編集する

まぁ、仙石浩明CTO の日記: su & emacsclientのコメント欄にあるように、X で Emacs 立ち上げっぱなしな人は export EDITOR=emacsclient しておいて sudoedit (もしくは sudo -e) でいいとかいう話だったりするわけですが。

編集対象がテンポラリファイルのパス名になるのが不便...

なんて話がコメントで出てきているわけですが、じゃあ gnuserv + tramp なんてどうだろう。要するに emacs で M-x gnuserv-start しておいて、 gnuclient /sudo::/etc/passwd (もしくは /su::/etc/passwd) とかそんなかんじでいいじゃないのかなぁと。そのまま使おうと思うと、root からは直接 gnuclient が使えないし毎回絶対パスを入力するのは面倒なので

#!/usr/bin/env ruby
require 'pathname'
username = 'foo'
file = Pathname.new ARGV.shift
exec "sudo -u #{username} gnuclient /sudo::#{file.realpath}"

みたいなスクリプトでも書いとけば便利かな。sudo を使わない人は最後の行を

exec "su #{username} -c gnuclient /su::#{file.realpath}"

としておけばいい。
ちなみに

ssh で root にログインするのが気持ち悪いのですよねぇ > tramp

というのは誤解で、tramp は /su: や /sudo: なパスを扱う場合は内部で su や sudo を使うだけで、なんでもかんでも ssh を使うわけではないです。