繁体   English   中英

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

[英]How to open the default text editor in Linux?

我需要在没有文件的情况下在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上没有完全可靠的“默认编辑器”概念,更不用说类似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和pre-XDG图形系统,当然还有任何服务器环境)没有GUI)。

顺便说一句,如果我甚至可以大致猜出你的脚本做了什么,它可能会被削减到一个相当简单的sed脚本。 记住, sed可以(几乎)做greptail能做的一切。 也许看到结合两个sed命令 - 这是一个快速和肮脏的重构。

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所做的,所以我不会尝试在我自己的特殊脚本中重新实现它,并建议您也不应该这样做。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM