C ++(Unix):使用默认编辑器打开文本文件

时间:2014-01-10 13:26:29

标签: c linux unix default text-editor

问题在于上面,我的Google搜索没有成功。我想我需要获取默认编辑器然后使用system("editor file.txt");?我怎么能得到默认编辑器?

编辑:我不知道为什么但是stackoverflow不喜欢我的“嘿”......然后不是。

2 个答案:

答案 0 :(得分:8)

没有官方解决方案。以下是我打开文本编辑器的建议:

如果文件扩展名为.txt,而xdg-open上的$PATH可用且$DISPLAY变量非空,则使用xdg-open。否则使用/usr/bin/sensible-editor(如果存在)。否则,请使用getenv("EDITOR")getenv("VISUAL")getenv("SELECTED_EDITOR")。如果没有设置,请尝试nanonano-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以获取完整代码。