【问题标题】:Advice regarding IPython + MacVim Workflow关于 IPython + MacVim 工作流程的建议
【发布时间】:2009-01-17 13:46:27
【问题描述】:

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

IPython 对我情有独钟的原因很大程度上是因为我通常喜欢命令提示符,尤其是受 ksh、csh 启发的受 *nix 启发的提示符(是的,chs 是一个怪物,但作为提示符它有很多非常好的特性)、bash 和 zsh。对于 *nix 提示骑手来说,IPython 确实像家一样。混合系统 shell 和 python 也是一个非常好的主意。另外,当然,IPython 在解决the Python Challenge 谜语时有很大帮助。甚至是无价之宝。

现在,我也喜欢 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 或其他一些我喜欢的编辑器,我也很感兴趣。也许有些教训是一般性的。

【问题讨论】:

  • 默认情况下%run foo 表示python foo.py。虽然%run -n foo 类似于import foo

标签: python vim ipython


【解决方案1】:

我使用 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 中当前缓冲区所在的目录,然后 %run 文件。如果您在 IPython 中激活了 %pdb,这将特别有用。

不要忘记,您需要一个名为“ipython”的活动 Screen 会话,其中运行 IPython。

如果你喜欢 Emacs。 IPython 有 good support

【讨论】:

  • 这听起来很有希望。我已经将它标记为答案,即使我还不能让它工作。出于某种原因,我的屏幕会话没有 ipython 之类的路径。我不太明白。
  • 尝试以这种方式启动Screen + IPython:$ screen -S ipython ipython
【解决方案2】:

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

使用此插件,您可以发送行或整个文件供 IPython 执行,还可以取回对象自省和单词补全 在 Vim 中,就像你得到的一样:object?&lt;enter&gt;object.&lt;tab&gt; 在 IPython 中。

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      editor 0
      

      editor mvim --remote-tab-wait-silent
      

      我认为你需要让 MacVim 在后台保持打开状态。您也可以使用 -f 标志。从MacVim google group看这个帖子。

      【讨论】:

        猜你喜欢
        • 2013-09-17
        • 2011-03-02
        • 1970-01-01
        • 1970-01-01
        • 2012-10-22
        • 2012-03-13
        • 2021-02-02
        • 1970-01-01
        • 2011-03-27
        相关资源
        最近更新 更多