我正在编写基于终端的应用程序,但我希望用户能够在单独的编辑器中编辑某些文本数据。例如,如果用户选择编辑当前用户名列表,则列表应在用户喜欢的编辑器(vim,gedit等)中作为文本文件打开。这可能是一个环境变量,例如$ MYAPPEDITOR。这与提交消息在svn中的工作方式类似。
这是在/ tmp中创建临时文件的最佳方法,并在编辑器进程终止时读取它吗?或者有更好的方法来解决这个问题吗?
答案 0 :(得分:2)
已经有一个$EDITOR
变量,这是非常标准的,我已经看到它在各种各样的unix上工作。此外,vi
始终是任何unix风格的选项。
Debian有一个sensible-editor
命令可以调用$EDITOR
,如果可以的话,可以调用xdg-open
,否则就会调用一些标准的命令。 Freedesktop.org有一个sensible-editor
命令,可以检测正在运行的桌面环境,并使用关联的应用程序打开该文件。据我所知,xdg-open
在其他发行版中不存在,当然gedit
将在纯文本环境中失败,但尝试尽可能多的选项不会有害,如果您认为桌面用户可以看到他们幸福闪亮的kate
或vi
而不是可怕的旧nano
或crontab
,这一点非常重要。 ;)
sudoedit
和git
的工作方式也是在/ tmp中创建一个文件。 svn
将它放在.git下,{{1}}实际上将它放在当前目录中(而不是/ tmp)。
答案 1 :(得分:1)
svn和mercurial的方法是在/ tmp。
中创建一个文件 顺便说一句,你不需要一个MYAPPEDITOR,在nix上已有EDITOR出现。答案 2 :(得分:0)
由于您在帖子中提及svn
,为什么不按照相同的方法进行操作? svn
会打开一个文件,其中包含$EDITOR
(或$SVN_EDITOR
)所包含的特定名称 - 这可能实际上需要您做一些工作;确定每个支持的编辑器的参数。在任何一种情况下,您都拥有已保存文件的名称(如果某些内容失败,则显示应用程序的错误代码),您可以使用它。