【问题标题】:How to open the default text editor in Linux?如何在 Linux 中打开默认文本编辑器?
【发布时间】:2013-10-08 16:05:00
【问题描述】:

我需要在没有文件的情况下在 Linux 中打开默认文本编辑器。我知道我可以使用命令 xdg-open 在默认编辑器中打开文件,但我需要在没有文件的情况下打开编辑器并让用户创建文件。

编辑:

我用这个脚本解决:

#!/bin/sh
cd /usr/share/applications/
atalho=`grep $1 defaults.list | tail -1 | sed "s:^$1=::" `
`grep '^Exec' $atalho | tail -1 | sed 's/^Exec=//' | sed 's/%.//'` &

在 Ubuntu 上运行良好,但我担心这个脚本是否可以在其他 Linux 发行版中运行。

【问题讨论】:

    标签: linux shell text editor default


    【解决方案1】:

    Linux 上没有完全可靠的“默认编辑器”概念,更不用说更广泛的类 Unix 系统了。

    传统上,用户会将环境变量EDITOR 设置为他们选择的编辑器的路径。如果设置了这个变量,我想你可以有理由相信他们会知道如何使用它,即使他们最终会遇到像nano 这样可怕的事情。

    一个稍新的约定是将VISUAL 设置为首选的“可视化编辑器”——我猜该术语来自vi,与ed 等行编辑器形成对比。

    ${VISUAL-${EDITOR-nano}} path/to/new/file.txt
    

    在 Debianish 系统上,系统默认编辑器可通过 alternatives 配置,并且只需使用命令 editor 即可。

    当然,在 XDG 系统上,您可以简单地

    touch path/to/new/file.txt
    xdg-open path/to/new/file.txt
    

    不用说,这仅在您拥有 XDG 时才有效,即在实践中具有活动图形会话的 Linux(或者可能是现代 *BSD)平台(不包括 Mac 和 XDG 之前的图形系统,当然还有任何服务器环境没有 GUI)。

    顺便说一句,如果我能大致猜出你的脚本做了什么,它可能会被缩减为一个相当简单的sed 脚本。请记住,sed 可以(几乎)做任何事情,greptail 可以。也许也可以看看Combining two sed commands - 这是一个快速而肮脏的重构。

    cd /usr/share/applications
    $(sed -n "s:^Exec=\([^%]*\)\(%.\(.*\)\)*:\1\3:p" "$(sed -n "s:^$1=::p" defaults.list | tail -1)" | tail -1) &
    

    但是,从快速谷歌搜索来看,/usr/share/applications/defaults.list 似乎是特定于 OpenDesktop 环境的;但它是系统范围的默认默认值 - 管理员可能已经在不同的位置安装了覆盖,并且个人用户可能有个人偏好。查找和遍历这个层次结构正是 xdg-open 所做的,所以我不会尝试在我自己的临时脚本中重新实现它,并且建议你也不应该这样做。

    您的问题中没有关于图形环境的任何内容,因此不清楚您是否真的在为几乎不知道如何在图形环境中单击和流口水的初学者寻找一个简单的编辑器(在这种情况下,我会说使用 @ 987654339@ 后跟 xdg-open) 或称职的程序员编辑器在窗口中以哪种方式运行或不能在窗口中运行(可以尝试 VISUAL 回退到 EDITOR,并记录您使用此机制)。

    【讨论】:

    【解决方案2】:

    vi 是您的默认编辑器吗?我会做类似“vi mynewfile.txt”的事情

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-03
    • 2021-04-09
    • 1970-01-01
    • 2013-02-28
    • 2012-11-17
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多