问题在于上面,我的Google搜索没有成功。我想我需要获取默认编辑器然后使用system("editor file.txt");
?我怎么能得到默认编辑器?
编辑:我不知道为什么但是stackoverflow不喜欢我的“嘿”......然后不是。
答案 0 :(得分:8)
没有官方解决方案。以下是我打开文本编辑器的建议:
如果文件扩展名为.txt
,而xdg-open
上的$PATH
可用且$DISPLAY
变量非空,则使用xdg-open
。否则使用/usr/bin/sensible-editor
(如果存在)。否则,请使用getenv("EDITOR")
,getenv("VISUAL")
或getenv("SELECTED_EDITOR")
。如果没有设置,请尝试nano
,nano-tiny
,然后vi
。
答案 1 :(得分:3)
有一个示例来获取默认编辑器环境,从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;
}
}
}
您可以查看http://www.opensource.apple.com/source/sudo/sudo-9/sudo/visudo.c以获取完整代码。