有关IPython + MacVim Workflow的建议

PEZ*_*PEZ 18 python vim ipython

我刚刚找到了IPython,我可以报告我深深的爱.这种感情立竿见影.我认为这件事会变成持久的东西,就像我用屏幕那样.Ipython和屏幕碰巧也是最好的朋友,所以这是一个三角戏剧.纯粹是柏拉图式的,请注意.

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

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

ipython -e "open -a MacVim"
Run Code Online (Sandbox Code Playgroud)

因此,当我从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
Run Code Online (Sandbox Code Playgroud)

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

Man*_*ron 14

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

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

$ screen -S ipython
$ ipython
Run Code Online (Sandbox Code Playgroud)

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

autocmd FileType python map F5 :w<CR>:!screen -x ipython -X stuff $'\%run %:p:h\n'<CR><CR>
Run Code Online (Sandbox Code Playgroud)

然后当你点击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>
Run Code Online (Sandbox Code Playgroud)

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

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

如果你喜欢Emacs.对IPython 有很好的支持.

  • 尝试以这种方式启动Screen + IPython:$ screen -S ipython ipython (4认同)

Pau*_*nov 5

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

使用这个插件,您可以发送行或整个文件IPython的执行,并取回对象自省和字补Vim里,像你得到什么:object?<enter>object.<tab>在IPython中.

这篇文章中看一下这个插件的两个截屏视频.