【问题标题】:How to allow a user to edit data in a separate app from the terminal?如何允许用户在与终端不同的应用程序中编辑数据?
【发布时间】:2010-12-05 20:10:22
【问题描述】:

我正在编写一个基于终端的应用程序,但我希望用户能够在单独的编辑器中编辑某些文本数据。例如,如果用户选择编辑当前用户名列表,则该列表应在用户最喜欢的编辑器(vim、gedit 等)中以文本文件的形式打开。这可能是一个环境变量,例如 $MYAPPEDITOR。这类似于 svn 中提交消息的工作方式。

最好的方法是在 /tmp 中创建一个临时文件,并在编辑器进程终止时将其读入?或者有没有更好的方法来解决这个问题?

【问题讨论】:

    标签: c unix text editor terminal


    【解决方案1】:

    已经有一个$EDITOR 变量,这是非常标准的,我已经看到它在各种各样的unix 上工作。此外,vi总是在任何风格的 unix 上都是一个选项。

    Debian 有一个sensible-editor 命令,如果可以,它会调用$EDITOR,否则会回退到一些标准命令。 Freedesktop.org 有一个xdg-open 命令,它将检测正在运行的桌面环境并使用关联的应用程序打开文件。据我所知,sensible-editor 在其他发行版中不存在,当然xdg-open 在纯文本环境中会失败,但如果您认为它是,尝试尽可能多的选项也无妨重要的是桌面用户可以看到他们快乐闪亮的geditkate,而不是可怕的旧vinano。 ;)

    crontabsudoedit 的工作方式也是在 /tmp 中创建一个文件。 git 放在 .git 下,svn 实际上放在当前目录(不是 /tmp)。

    【讨论】:

    【解决方案2】:

    svn 和 mercurial 的做法是在 /tmp 中创建一个文件。

    顺便说一句,您不需要 MYAPPEDITOR,在 nix 上已经存在 EDITOR。

    【讨论】:

      【解决方案3】:

      既然您在帖子中提到了svn,为什么不采用相同的方法呢? svn 打开具有特定名称的文件,其中包含 $EDITOR(或 $SVN_EDITOR)包含的任何内容 - 这实际上可能需要您做一些工作;确定每个支持的编辑器的参数。在任何一种情况下,您都有已保存文件的名称(或应用程序的错误代码,如果出现故障),您可以使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-02-19
        • 2014-12-13
        • 1970-01-01
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 1970-01-01
        • 2011-07-09
        相关资源
        最近更新 更多