Emacs でターミナル エミュレータを開いたとしM-x ansi-term
ます。これにより、選択したシェルを使用して Emacs でバッファーが開きます。次にipython
、このシェルから実行するとします。ipython
Emacs で Python コードを使用して、別のバッファーからこのセッションにコードを送信できますか? もしそうなら、どのように?
3 に答える
この目的のために、マイナー モードを用意しています (ただし、IPython 固有ではなく、主にシェル スクリプトに使用します): isend-mode。
使用方法は次のとおりです。
ansi-term
バッファを開きます:M-x
ansi-term
RET/usr/bin/ipython
RET実行するコードを含むバッファーを開き、インタープリター バッファーに関連付けます。
M-x
isend-associate
RET*ansi-term*
RETC-RETPython バッファーをヒットして、現在の行を
ansi-term
バッファー内のインタープリターに送信します。
(defun send-buffer-to-ipython ()
"Send current buffer to the running ipython process."
(interactive)
(let* ((ipython-buffer "*ansi-term*") ; the buffer name of your running terminal
(proc (get-buffer-process ipython-buffer)))
(unless proc
(error "no process found"))
(save-buffer)
(process-send-string proc
(format "execfile(\"%s\")\n" (buffer-file-name)))
(pop-to-buffer ipython-buffer) ; show ipython and select it
;; (display-buffer ipython-buffer) ; show ipython but don't select it
))
send-buffer-to-ipython
次に、コマンドを好きなキーにバインドします。私はそれをバインドしますC-c C-c
(define-key python-mode-map [?\C-c ?\C-c] 'send-buffer-to-ipython)
python-mode.elを使用
Mxcustomize-変数RETpy-shell-nameRET ansi-term
Mx ansi-term RET ipython RET
CcPythonからのCc-IPythonシェルで実行されるバッファ
警告:デフォルトのpy-shell-nameの前にシバンがあります
https://launchpad.net/python-mode/trunk/6.0.12/+download/python-mode.el-6.0.12.tar.gz