Main Contents
2007年01月10日
osxのpythonでCtrl-Aとか日本語入力とか。
setomitsさんがblogSetomits : Mac OS X 上の Python インタプリタとかblogSetomits : あらためて Python 2.4.4あるいはblogSetomits : 続 Mac OS X 上の Python インタプリタで書かれているように、osxのpythonのインタラクティブモードはなんだか動作がヘンです。Emacsキーバインドが効かなかったり、日本語がちゃんと入力できなかったり。
はじめ、readlineをコンパイルしてみたり、python自体をコンパイルしてみたりしたのですが状況はそれほど変わらず。結局、rlwrapをMacPorts(旧DarwinPorts)から導入し、~/.inputrcを設定することで問題が解決しました。
ちなみにrlwrapというのはreadlineラッパーです。これがどんなものかは川o・-・)<2nd life - rlwrap - readline ラッパーで説明されていますので、ご参照ください(手抜き)。自分もここでrlwrapを知りました。
以下、手順。
1.MacPortsのインストール
InstallingMacPorts - MacPorts - Tracに書かれているとおりXcode Toolsをインストールして、環境変数を設定してから、MacPortsの.dmgをインストールすればOK、のはず。自分はDarwinPortsのころにインストールしたのでよくわからん。たぶん同じだけど。
2.rlwrapのインストール
ターミナルから
sudo port install rlwrap
とするだけ。
標準構成ならたぶん /opt/local/bin/rlwrapに入るかな。
3. ~/.inputrcの設定。
意味はわからんけどreadlineさまが機嫌良く動いてくれるように、以下のおまじないを ~/.inputrcに追加。
set convert-meta off set output-meta on set input-meta on
4. 実行
以下のような感じ。例ではわからないが、ちゃんとCtrl-AとかCtrl-H とかのEmacsキーバインドが効いている。
% rlwrap python2.4
Python 2.4.4 (#1, Oct 18 2006, 10:34:39)
[GCC 4.0.1 (Apple Computer, Inc. build 5341)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> u = 'あいうえお'.decode('euc-jp')
>>> len(u)
5
>>> for c in u:
... print hex(ord(c))
...
0x3042
0x3044
0x3046
0x3048
0x304a
どうでもいいけど、標準の pytho2.3.5 で decode('euc-jp')とすると、"LookupError: unknown encoding: euc-jp"と怒られてしまう。JapaneseCodecて2.3から標準でなかったっけ?
- by
- at 2007年01月10日 11:06
- in osx
TrackBacks
トラックバックURL:
おかげでシアワセになれました。ありがたやありがたや。
ちなみに日本語Codecが標準で入るようになったのは Python 2.4 からです。