MoinMoinをお好みのエディタで編集できるPythonスクリプトeditmoin

MoinMoinは海外で使用例が多いPython製のWikiエンジンです。ページ単位でアクセスコントロールが可能なほか、ローカルで動作させることができるなどの特徴があります。
editmoinというPythonスクリプトを使えば、MoinMoinのページを普段利用しているエディタで編集することができます。

インストール

editmoin - Labix

公式ページからダウンロードしても良いですが、debianubuntuであればaptを使ってインストールすることもできます。

apt-get install editmoin

基本的な使い方

ログインが必要ないMoinMoinならURLを引数にするだけでエディタが起動して編集が可能です。エディタを終了するとMoinMoinに書き込まれます。
テンプレートの指定は-tオプションを使って行えます。

editmoin http://moinmoin.wikiwikiweb.de/TestPage
editmoin -t SomeTemplate http://moinmoin.wikiwikiweb.de/TestPage

認証の設定(~/.moin_ids)

~/.moin_idsにMoinMoinのURLとMOIN_IDというCookieの対を記述することで、ログインが必要なwikiでも認証なしで書き込めます。
MOIN_IDはMoinMoinにログイン後にブラウザから調べます。Firefoxの場合は「編集->設定」の「プライバシー」にある「Cookieを表示」から調べられます。
以下のようになります。

http://moinmoin.wikiwikiweb.de 987654321.321.54321 
http://wiki.canonical.com
http://example.com/moin/moin.cgi 123456789.123.12345 

Basic認証は~/.moin_idsで指定しなくても対話的に認証できますが、面倒な場合は~/.moin_ids中でURLにユーザ名とパスワードを埋め込むこともできます。
ユーザ名をuser、パスワードをpasswordとすると以下のようになります。

https://user:password@example.com/moin/moin.cgi 123456789.123.12345
ショートカット

~/.moin_idsに記述があればショートカットが利用可能です。URL中でMoinMoin以下のパス(サブパス)がはじまるスラッシュより前の文字列の一部分を入力するとだけでアクセスできます。
例えばhttp://wiki.canonical.comが存在する場合、canonicalだけでもアクセスできます。

editmoin canonical/FrontPage

エイリアス(~/.moin_alias)

深い階層のページなど、長いURLを打ち込むのは面倒な場合は、~/.moin_aliasesでエイリアスを設定することができます。
各行にエイリアスと展開結果の対を指定します。以下のようになります。

script http://moinmoin.wikiwikiweb.de/ScriptMarket

エイリアスを利用したアクセスも通常の使い方と変わりません。
以下の例ではhttp://moinmoin.wikiwikiweb.de/ScriptMarket/EditMoinにアクセスされます。

editmoin script/EditMoin

環境変数による設定

EDITOR

デフォルトだとviが起動します。editmoinで起動するエディタは環境変数EDITORで指定できます。bashの場合は以下。

export EDITOR emacs
http_proxy

プロキシ下のネットワークに居る場合は、環境変数http_proxyにプロキシを指定できます。同じくbashの場合は以下。

export http_proxy http://proxy.example.com:8080/

おまけ:Vimシンタックスファイル

VimにはMoinMoin記法のシンタックスファイルmoin.vimがあります。以下からダウンロードできます。~/.vim/syntax/以下に配置しておきます。

moin.vim - Syntax file for MoinMoin wiki text : vim online

さらにファイルタイプの自動判別のために~/.vim/ftdetect/moin.vimとして以下の内容を記述しておくと良いです。

au! BufRead,BufNewFile *.moin
    \ if getline(1) =~ '^@@ Syntax: 1\.5$' | setf moin1_5
    \ | else | setf moin1_6 | endif