有关IPython + MacVim Workflow的建议

时间:2009-01-17 13:46:27

标签: python vim ipython

我刚刚找到IPython并且我可以报告我深深的爱。这种感情立竿见影。我认为这件事会变成持久的东西,比如the one I have with screen。 Ipython和屏幕碰巧也是最好的朋友,所以这是一个三角戏剧。纯粹是柏拉图式的,请注意。

IPython与我一起出现问题的原因非常多,因为我一般都喜欢命令提示,特别是* nix启发的提示灵感来自ksh,csh(是的,chs是一个怪物,但作为一个提示它运动很多非常好的功能),bash和zsh。而IPython确实感觉像是一个* nix提示骑手的家。混合系统shell和python也是一个非常好的主意。当然,在解决the Python Challenge谜语时,IPython有很多帮助。非常宝贵。

现在,我也喜欢Vim。因为我在那些日子里学习了vi,所以没有回头路。当我有选择时,我就在Mac上。现在我想把我的IPython + MacVim工作流程粘在一起。到目前为止我所做的是我使用以下方式启动Ipython:

ipython -e "open -a MacVim"

因此,当我从IPython编辑时,启动MacVim并加载文件/模块。看起来有点像:

In [4]: %run foo #This also "imports" foo anew
hello world

In [5]: edit foo
Editing... done. Executing edited code... #This happens immediately
hello world

In [6]: %run foo
hello SO World

行。我认为这可以改进。也许有办法将IPython与MacVim联系起来?请分享您的经验。当然,如果您使用TextMate或其他一些fav编辑器我也很感兴趣。也许有些课程是一般性的。

4 个答案:

答案 0 :(得分:14)

我使用Linux,但我相信这个技巧也可以在OS X中使用。我使用GNU Screen按照this tip的建议从Vim发送IPython命令。我就是这样做的:

首先,你应该打开一个终端并启动一个名为'ipython'的屏幕会话或任何你想要的,然后启动IPython:

$ screen -S ipython
$ ipython

然后你应该把它放在你的.vimrc中:

autocmd FileType python map F5 :w<CR>:!screen -x ipython -X stuff $'\%run %:p:h\n'<CR><CR>

然后当你点击F5时,它会告诉Screen在之前创建的'ipython'中执行命令'%run file',其中file是你在Vim中的当前缓冲区。

你可以调整它来从Vim执行你想要的IPython命令。例如,我使用它:

autocmd FileType python map <F5> :w<CR>:!screen -x ipython -X stuff $'\%reset\ny\n\%cd %:p:h\n\%run %:t\n'<CR><CR>

执行%reset(对提示回答“是”),然后切换到vim中当前缓冲区所在的目录,然后%运行该文件。如果您在IPython中激活%pdb,这将特别有用。

不要忘记你需要一个名为'ipython'的活动屏幕会话,其中运行IPython。

如果你喜欢Emacs。 IPython有good support

答案 1 :(得分:5)

这个问题现在已经陈旧,但仅供参考 - 如果您在启用ZeroMQ时使用IPython 0.11,请查看vim-ipython(0.11附带的旧版本)。

使用此插件,您可以发送IPython的行或整个文件来执行,还可以获取对象内省和单词补全  在Vim中,就像你在IPython中使用object?<enter>object.<tab>一样。

this post上查看此插件的两个截屏视频。

答案 2 :(得分:1)

在主目录的ipythonrc.ini文件中,将编辑器更改为MacVim。

答案 3 :(得分:1)

我遇到了同样的问题。经过实验,这是我的解决方案:如果你将MacVim.app放在/ Applications中并且mvim在你的路径中,在〜/ .ipython / ipythonrc中更改行

editor 0

editor mvim --remote-tab-wait-silent

我认为您需要在后台保持MacVim的开放状态。您也可以使用-f标志。从MacVim google group

中查看此主题