如何在 Linux 中打开默认文本编辑器?

Rod*_*lli 5 linux shell text default editor

我需要在没有文件的情况下在 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/%.//'` &
Run Code Online (Sandbox Code Playgroud)

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

tri*_*eee 5

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

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

一个稍新的约定是设置VISUAL首选的“可视化编辑器” - 我猜这个术语来自于vi与像ed.

${VISUAL-${EDITOR-nano}} path/to/new/file.txt
Run Code Online (Sandbox Code Playgroud)

在 Debianish 系统上,系统默认编辑器可通过alternatives命令进行配置和使用editor

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

touch path/to/new/file.txt
xdg-open path/to/new/file.txt
Run Code Online (Sandbox Code Playgroud)

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

顺便说一句,如果我能粗略地猜出你的脚本的作用,它可能会被简化为一个相当简单的sed脚本。请记住,sed可以做(几乎)所有事情grep并且tail可以。也许另请参阅组合两个 sed 命令- 这是一个快速而肮脏的重构。

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

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

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