如何在不退出python的情况下重新执行我的python脚本

时间:2018-03-20 15:01:48

标签: python vim tmux

我目前使用vim和tmux来编辑我的代码。在调试过程中,我经常要:

  1. 保存我在vim中的更改
  2. 转到终端窗格
  3. 运行python -i script.py
  4. 进行一些测试(例如打印一些变量,查看错误消息等),然后返回我的vim窗格。
  5. 然而,经过多次编辑后,这会变得很麻烦,因为每次我都会切换到终端窗格,退出python -i会话,然后重新运行python。最糟糕的是,当我重新开始会话时,我失去了所有的python历史记录!

    我想在我的.vimrc中绑定像:!python -i <current file>这样的东西,但这并不能解决问题,因为我无法在同时测试脚本的同时编辑脚本(就像使用IDE一样)以及我得到tmux的原因)。无论如何,正在运行python -i似乎会崩溃。

    我该怎么办?

2 个答案:

答案 0 :(得分:0)

你可以添加一个python代码来运行vim编辑器,使编辑器自动执行python代码。

import sys, tempfile, os
from subprocess import call

EDITOR = os.environ.get('EDITOR','vim') #that easy!

initial_message = "" # if you want to set up the file somehow

with tempfile.NamedTemporaryFile(suffix=".tmp") as tf:
     tf.write(initial_message)
     tf.flush()
     call([EDITOR, tf.name])

    # do the parsing with `tf` using regular File operations.
    # for instance:
    tf.seek(0)
edited_message = tf.read()

在“initial_message”中,你可以给出“在编辑器中运行python代码的命令” 希望这样可以正常工作。

答案 1 :(得分:0)

这可能不是你问题的答案,但我建议你使用IPython,这可能会简化你的生活。

这可以解决您的历史记录问题,因为您可以通过%logstart开启登录,然后在会话之间保留历史记录。

您还可以使用%run命令重新加载脚本。

还有一个链接vim和Ipython的插件:https://github.com/ivanov/vim-ipython但是我从未使用它,它可能值得一试。