Windows中与VISUAL或EDITOR环境变量相对应的是什么?

5
在 Unix 系统上,询问用户编辑某些足够复杂的文本的一种常见方式是打开在 VISUAL 或者 EDITOR 环境变量中指定的编辑器,并将该编辑器指向一个初始化了所需编辑内容的临时文件。那么在 Windows 系统上,是否有类似这种模式的解决方案呢?如果有,它是如何工作的呢?

不,没有。Unix基于文本文件,因此通过这些环境变量设置一个单一的集中式“标准”编辑器是有意义的。Windows配置是“任何事情都可以”,因此拥有一个标准编辑器是毫无意义的。“让我们用记事本打开这个二进制垃圾。会出什么问题呢?”对于存储在注册表中的配置选项,记事本比无用还要糟糕。 - Marc B
有没有在Windows上实现相同结果的方法?Windows的CLI工具是如何解决这个问题的? - joshlf
就像我说的那样,在Windows中没有标准编辑器,所以无法实现你想要的功能。 - Marc B
1个回答

0
如果您想让您的应用程序为用户打开配置文件进行编辑,可以按照以下方式实现(C++):
if( (INT_PTR)ShellExecute( NULL, "open", "config.json", NULL, NULL, SW_SHOWDEFAULT) <= 32 )
    if( (INT_PTR)ShellExecute( NULL, "open", "notepad.exe", "config.json", NULL, SW_SHOWDEFAULT) <= 32 ){
        MessageBox( ourHwnd, "Fail to open editor. Please edit config.json", "Error", MB_ICONERROR );
    }

这将首先尝试像Windows一样打开“config.json”,就像用户双击它一样。 我假设如果用户有喜欢的文本编辑器,他/她会将该编辑器与*.json、*.txt和其他文本文件相关联。 如果失败了,那么就用“config.json”作为参数启动记事本。 这不应该失败,但我曾经看到过用户删除记事本以腾出硬盘空间,所以它可能会失败,如果失败了,那么只需显示错误消息。

根据微软文档ShellExecute可以将“edit”作为第二个参数。因此,似乎存在或计划了这样的功能,但我不知道用户更改Windows中的编辑操作的任何选项。所以我不会使用它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接