EmacsでiPython notebookを使う(EIN / Emacs iPython notebook)
iPython notebook、使ってますか。便利ですね。
Emacs以外の開発環境が増えるのが許せないハードコアEmacserのために、EmacsからiPython notebookの編集・実行ができるEmacs iPython Notebook(EIN)をご紹介。
Emacs上でiPython Notebookに接続して、Emacs上で直接iPython notebookの作成・セルの編集、実行、グラフ表示までできるスグレモノです。
先に注意:まだそこそこ不安定なので、大切なNotebookの編集はやめておいたほうがよい
インストール
Emacsにて
M-x el-get-install
でeinを選択して、インストール。
自前でコンパイルなど、そのほかの方法は公式サイトを確認のこと。
かんたんな使い方。
ipython notebookサーバーはあらかじめ起動しておいて、Emacsから
M-x ein:notebooklist-open
で、ポートを選択して接続。
以下のようにノートブック一覧がバッファに表示される。
カーソルを"New NoteBook"に合わせて新しいNotebookが開かれる。
サンプル
こんな感じ。%matplotlib inline やっておけば、グラフも出せます。いいね!・・・・でもEmacsで編集した後、ブラウザで開くとグラフが表示されないので、その場合はブラウザ側で再度セルを実行する必要があり。
主なショートカットキー
- C-c C-c :選択したセルを実行
C-c C-z :インタラプト
C-c C-n :次のセルへ
C-c C-p :前のセルへ
C-c C-a : 上にセルを追加
C-c C-b : 下にセルを追加
C-c C-s :セルを分割
C-c C-m :セルをマージ
C-c C-t セルのタイプ(Python, MarkDown, Raw)切り替え
ちなみにM-n, M-pにwordsheet-(next|prev)-input-historyとかいうコマンドが割り当てられていて、 簡単にセルの内容が実行履歴で入れ替えられてしまうので、 私は以下のような設定を.emacsに書いてキーバインドを前後セルの移動と置き換えた。おすすめ。
(eval-after-load 'ein-notebook '(progn (define-key ein:notebook-mode-map (kbd "M-n") 'ein:worksheet-goto-next-input) (define-key ein:notebook-mode-map (kbd "M-p") 'ein:worksheet-goto-prev-input) (define-key ein:notebook-mode-map (kbd "C-c C-n") 'ein:worksheet-next-input-history) (define-key ein:notebook-mode-map (kbd "C-c C-p") 'ein:worksheet-prev-input-history)))
注意したいこと。
- 重要 ノートブックを保存しないままEmacsを終了させて、確認ダイアログで"保存"を選ぶとnotebookが破壊される事があるので、ちゃんと手動で保存しておきましょう。
- まだPython以外の他言語カーネルには対応してないっぽい。試してみたところ、あらかじめIJulia用で作っておいたNotebookの編集はできてJuliaセルの実行もできるけど、現在EIN上でカーネルの種類を選んだりはできない。多分。
- カーネルのリスタート(M-x ein:notebook-restart-kernel-command)がうまくいかない。切断後再接続できない。そういうときは一度保存して閉じ、 ノートブック一覧画面で[STOP}を叩いて終了させてから再度開いている。バグだと思う。
・・・色々あるけど、かなり便利なので、ぜひ試してほしい。