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

时间:2013-10-08 16:05:00

标签: linux shell text editor default

我需要在没有文件的情况下在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发行版中使用。

2 个答案:

答案 0 :(得分:0)

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

通过快速谷歌搜索,/usr/share/applications/defaults.list似乎特定于OpenDesktop环境;但它是系统范围内的默认默认值-管理员可能已在其他位置安装了替代项,并且个别用户可能还具有各自的首选项。 xdg-open的工作就是查找并遍历此层次结构,因此,我不会尝试在我自己的临时脚本中重新实现它,并且建议您也不要这样做。

问题与图形环境无关,因此尚不清楚您是否正在为那些几乎不知道如何在图形环境中单击和流口水的初学者寻找简单的编辑器(在这种情况下,我会说{ {1}}后跟touch)或称职的程序员编辑器,以某种方式或可能不在窗口中运行(可以尝试使用xdg-open并回退到VISUAL,并记录您使用此方法机制)。

答案 1 :(得分:-1)

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

的事情