原因がzshなのかpythonなのかよくわかりませんが、
インタラクティブシェルで矢印キーが効かない、という問題がこれで解決したのでメモ。
環境
mac OS 10.8.5
iTerm2
zsh
python 2.7.5
現象
ここにも書いてるんですが、pythonのインタラクティブシェルを開いて
矢印キーでコマンド履歴をたどろうとすると...
>>> import os
>>> ^[[A
というように、よくわからない記号が表示されるというもの。
解決策
結局こちらの記事にたどり着きました。
(記事の本来の内容は今回の問題のことではないんですが)
.pythonstartupを作ってpythonのインタラクティブモードを拡張する - hirouyukiの日記
で、こちらに書いてあるとおりにやります。
readlineをインストール
easy_install readline
python初期設定ファイル.pythonrc.py
を作る
インタラクティブシェル起動時に読み込まれる設定ファイルを作ります。
記事中では.pythonstartup
というファイル名ですが
色々調べていると.pythonrc.py
というファイル名もよく使われてる&
これだとvimで開いた時にpythonファイルとして開いてくれるので
この名前にしました。
# -*- encoding: utf-8 -*- # Python startup file import readline import rlcompleter import atexit import os # tab complete readline.parse_and_bind('tab: complete') # history file histfile = os.path.join(os.environ['HOME'], '.pythonhistory') try: readline.read_history_file(histfile) except IOError: pass atexit.register(readline.write_history_file, histfile) del os, histfile, readline, rlcompleter, atexit
環境変数PYTHONSTARTUP
を追加する
私はzshを使っているため、.zshrc
に以下を追記
export PYTHONSTARTUP=~/.pythonrc.py
保存したら、反映
source ~/.zshrc
おしまい
この状態でpython
コマンドを打ち、インタラクティブシェルを開くと
矢印キーが正常に機能するようになりました。
Ctrl+P, Ctrl+NとかのEmacsライクな操作も可能。
加えて、記事に書いてあるようなタブ補完も有効になってさらに便利。
>>> import sys
>>> sys.s[ここでTabを押す]
sys.setcheckinterval( sys.setdlopenflags( sys.setprofile( sys.setrecursionlimit( sys.settrace( sys.stderr sys.stdin sys.stdout sys.subversion