问题如上所述,我在谷歌上的搜索没有成功。 我想我需要获取默认编辑器,然后使用
编辑:我不知道为什么,但stackoverflow不喜欢我的“嘿”,那就算了。
system("editor file.txt");
? 如何获取默认编辑器?编辑:我不知道为什么,但stackoverflow不喜欢我的“嘿”,那就算了。
system("editor file.txt");
? 如何获取默认编辑器?目前没有官方的解决方案。以下是我推荐的打开文本编辑器的方法:
如果文件名后缀是.txt
,并且xdg-open
在$PATH
上可用且$DISPLAY
变量非空,则使用xdg-open
。否则,如果存在,则使用/usr/bin/sensible-editor
。否则,使用getenv("EDITOR")
、getenv("VISUAL")
或getenv("SELECTED_EDITOR")
。如果都没有设置,则尝试使用nano
、nano-tiny
,最后使用vi
。
xdg-open
并不是"C++的官方部分",但它是"最广泛?"遵循的Linux桌面标准的一部分:https://freedesktop.org/wiki/ - Ciro Santilli OurBigBook.com有一个例子可以获取默认的编辑器环境,从visudo(它使用默认编辑器来打开sudoers文件)的源代码中:
/*
* Check EDITOR and VISUAL environment variables to see which editor
* the user wants to use (we may not end up using it though).
* If the path is not fully-qualified, make it so and check that
* the specified executable actually exists.
*/
if ((UserEditor = getenv("EDITOR")) == NULL || *UserEditor == '\0')
UserEditor = getenv("VISUAL");
if (UserEditor && *UserEditor == '\0')
UserEditor = NULL;
else if (UserEditor) {
if (find_path(UserEditor, &Editor, getenv("PATH")) == FOUND) {
UserEditor = Editor;
} else {
if (def_flag(I_ENV_EDITOR)) {
/* If we are honoring $EDITOR this is a fatal error. */
(void) fprintf(stderr,
"%s: specified editor (%s) doesn't exist!\n",
Argv[0], UserEditor);
Exit(-1);
} else {
/* Otherwise, just ignore $EDITOR. */
UserEditor = NULL;
}
}
}
xdg-open
给你。 - Frédéric Hamidixdg-open
是 freedesktop.org 的工具,sensible-editor
是 Debian 的工具... 我猜这取决于您想要支持的平台。 - Frédéric Hamidi