【问题标题】:Intelligently launching the default editor from inside a Python CLI program?从 Python CLI 程序中智能地启动默认编辑器?
【发布时间】:2009-12-06 22:11:37
【问题描述】:

this question 中的答案并未触及问题的核心。在基于 CLI 的 Python 程序中,我希望用户能够编辑文件然后返回程序。在返回之前,我希望他们能够取消他们的编辑。这应该感觉像是 Subversion 中的提交注释编辑功能。

目前此类任务的最佳做法是什么?

【问题讨论】:

  • 您想让用户即时编辑插件(或整个程序!),然后让他们放弃编辑或“提交”它们,同时重新加载新程序。这是你想要达到的目标吗?

标签: python editor


【解决方案1】:

您可以尝试查看 Mercurial 的源代码,它是用 Python 编写的。

他们使用os.environ读取环境变量HGEDITORVISUALEDITOR的值,默认为vi。然后他们使用os.system 在使用tempfile.mkstemp 创建的临时文件上启动编辑器。编辑完成后,他们读取文件。如果其中有任何真实内容,则操作继续,否则中止。

如果您想了解 Mercurial 是如何做到的,详细信息在 ui.pyutil.py

【讨论】:

    【解决方案2】:

    Subversion 等使用 $EDITOR 环境变量来确定使用哪个程序来编辑文本文件。当然,$EDITOR 仅在您使用 shell 中的 unixy 平台时才有效。您必须为 Windows (cmd /c start tempfile.txt) 或 Mac OS X (open tempfile.txt) 做一些不同的事情。

    但是,这基本上就是您其他问题的答案和相关答案所说的。

    如果您只想“取消”编辑,则制作文件的临时副本,然后调用您的编辑器。然后,您的程序可以将临时文件的内容复制到真实文件中,或者,如果用户取消,则不要。这基本上就是 Subversion 的做法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-10
      • 1970-01-01
      • 2011-10-06
      • 1970-01-01
      • 2011-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多