更新:问题仍然缺乏令人满意的答案。
我想将代码片段“发送”到Emacs 23.2(Linux)中的IPython解释器。假设我已经在Emacs的缓冲区中启动了一个IPython shell(例如使用Python-mode.el
和IPython.el
),有没有办法在不同的缓冲区中选择一个区域并将该区域“发送”给已经启动的IPython shell?
我已经尝试C-c C-c
(send-buffer-to-shell)和C-c |
(send-region-to-shell),但只有代码写完才有效在Python而不是在IPython中(IPython可以运行Python代码)。原因似乎是,对于这两个命令,Emacs创建一个扩展名为.py
的临时文件(而不是.ipy
扩展名),然后由IPython将其解释为“特定于Python的代码”。这使我无法使用特定于IPython的功能
比如魔术命令。
另外,我还读到Emacs提供M-| ('shell-command-on-region')
来运行shell中的选定区域。要使用IPython解释器执行此操作,我已尝试将shell-file-name
设置为我的IPython路径。但是,当我在选择区域后运行M-|
时,Emacs会提示我以下内容:
区域上的Shell命令:
然后如果我输入RET
,我会在*Shell Command Output*
缓冲区上获得IPython手册页,而不会执行该区域。是否有任何特定于IPython的命令可用于M-| ('shell-command-on-region')
以使IPython运行我的代码?
谢谢!
答案 0 :(得分:1)
您使用的是ipython.el吗? 它应该适用于Emacs 23。
如果没有,请查看EmacsWiki: iPython Emacs 23。
在Emacs的IPython Cookbook中还有一节(搜索IPythonEmacs23;抱歉不允许发布多个链接:(
一旦你启动了ipython-shell(抄送!),就可以使用"执行区域(" Cc |&#34)从已经启动的shell中的任何缓冲区的区域执行代码片段。 ;)
安德烈亚斯
答案 1 :(得分:0)
我找到 Q1 的部分答案:
Python-mode提供C-c C-c
,它可以向已经打开的Python shell发送缓冲区(类似C-c C-|
可以向shell发送一个区域),如果安装了ipython.el
,然后将默认的python shell设置为IPython。
不幸的是,这仅适用于python脚本,而不适用于IPython脚本。 C-c C-c
通过将带有代码段的缓冲区复制到扩展名为 .py 的临时文件,然后将其发送到shell。由于该文件具有扩展名 .py ,因此IPython执行它就好像它是常规Python代码一样,因此代码片段不能具有特定于IPython的代码(例如IPython魔术命令)..