【问题标题】:Opening default text editor in bash?在 bash 中打开默认文本编辑器?
【发布时间】:2012-05-23 17:49:07
【问题描述】:

我正在编写一个 shell 脚本并遇到了问题。有没有办法使用用户指定的文本编辑器打开文件?

【问题讨论】:

  • 小心:有些用户会将 EDITOR 设置为一个自行守护进程的程序,您的脚本将无法轻松地等待它们完成。
  • @WilliamPursell 为什么有人会这样做?你能给我一个合适的场景吗?
  • @kraxor,我会说这永远不合适,但有些人会做疯狂的事情。有人想要一个生成新窗口的 gui 编辑器并不罕见。

标签: linux bash shell


【解决方案1】:

用户选择的编辑器应该在$EDITOR,但你仍然必须选择一个合理的默认值。

"${EDITOR:-vi}" file.txt

【讨论】:

  • 你可能想做更多的后备,例如:${EDITOR:-${VISUAL:-vi}}
  • ${FCEDIT:-${VISUAL:-${EDITOR:-vi}}} 怎么样?将 VISUAL 优先于包含 ed$EDITOR 似乎是个好主意。 $FCEDITksh 的环境变量(可能仍然是),其中 fc 命令用于访问历史记录;它也被bash识别。
  • 那么还有什么更简洁的吗? DEFAULTEDITOR="`command -v nano >/dev/null 2>&1 && echo 'nano' || echo 'vi'`" && echo "${FCEDIT:-${VISUAL:-${EDITOR:-$DEFAULTEDITOR}}}" && "${FCEDIT:-${VISUAL:-${EDITOR:-$DEFAULTEDITOR}}}" file.txt
【解决方案2】:

Ignacio 是对的(尽管可以说,后备应该是 ed,这是 POSIX 要求存在的,尽管它基本上只对老前辈有用)。

如果您正在考虑图形编辑器,xdg-open file.txt 就是您所追求的。

【讨论】:

  • POSIX 也需要vi,不是吗?或者这只是 POSIX 的 User Portability Utilities 选项,ed 不是。但是 +1 提到ed
  • POSIX 2008 中对环境变量POSIX2_UPE(功能的旧名称是用户可移植性扩展,UPE)的讨论下,有一个UPU 中的功能列表:'User Portability Utilities 选项中的实用程序列表如下:bgexfcfgjobsmoretalkvi。。 i> 所以,理论上,如果你有fc 命令,你也应该有vi 可用。
【解决方案3】:

注意:xdg-open file.xml 很可能会在 Web 浏览器中打开。 所以,试试吧;

    # select your default sensible-editor from all installed editors, or not.
    select-editor
    # Open Default Text Editor
    sensible-editor file.xml

【讨论】:

    猜你喜欢
    • 2012-11-17
    • 2012-08-03
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多