【问题标题】:How to re-execute my python script without quitting python如何在不退出 python 的情况下重新执行我的 python 脚本
【发布时间】:2018-08-29 11:17:33
【问题描述】:

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

  1. 在 vim 中保存我的更改
  2. 转到终端窗格
  3. 运行python -i script.py
  4. 做一些测试(例如打印一些变量、检查错误消息等),然后返回我的 vim 窗格。

但是,在经过多次编辑后,这变得很麻烦,因为每次我都会切换到终端窗格,退出 python -i 会话,然后重新运行 python。最糟糕的是,当我重新启动会话时,我失去了所有的 python 历史记录!

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

我该怎么办?

【问题讨论】:

  • 那么,不可能使用 IDE 吗?
  • 查看如何在会话之间保留命令行历史记录:12
  • 如果你想要一个 IDE,最简单的解决方案就是使用一个。

标签: python vim tmux


【解决方案1】:

你可以添加一个 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 代码的命令”。
希望这能正常工作。

【讨论】:

    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2022-11-12
      • 2014-12-10
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 2011-05-16
      • 2019-02-25
      • 1970-01-01
      相关资源
      最近更新 更多