Ubuntu不同默认应用设置方式差异及文本编辑器设置对比
Ubuntu默认应用设置方法差异详解
嘿,我来帮你把Ubuntu里设置默认应用的这些方法掰扯清楚,尤其是你关心的「文本文件GUI/CLI默认编辑器」场景——每个工具的适用范围、优先级、影响对象都不一样,咱们一个个拆解:
一、各方法的核心特点与适用场景
1. Nautilus右键→属性→打开方式→设为默认(GUI可视化操作)
这是最适合新手的方式,完全不用碰命令行:
- 适用场景:给特定类型的文本文件(比如
.txt、.md)设置默认GUI编辑器,比如双击文本文件直接打开VS Code而不是Gedit。 - 影响范围:仅对当前用户生效,因为设置会自动写到你个人目录下的
~/.local/share/applications/mimeapps.list文件里。 - 优先级:用户级GUI设置,优先级比系统级的
defaults.list高,会覆盖系统默认。 - 局限性:只能管GUI里双击/右键打开的场景,和CLI下的编辑器调用完全无关。
2. /usr/share/applications/defaults.list(系统级默认配置文件)
这是系统全局的默认应用模板:
- 适用场景:给整个系统的所有用户设置默认应用,比如新创建的用户会直接继承这个配置。
- 影响范围:所有用户,修改需要
sudo权限。 - 优先级:系统级GUI设置,优先级低于用户自己的
mimeapps.list——如果某个用户已经通过Nautilus或手动编辑mimeapps.list改了默认,这个文件的设置不会覆盖它。 - 局限性:同样只影响GUI场景,和CLI编辑器无关。
3. ~/.local/share/applications/mimeapps.list(用户级自定义配置文件)
其实这就是Nautilus右键设置背后的“幕后文件”,手动编辑它更灵活:
- 适用场景:批量修改多个MIME类型的默认GUI应用,比如一次性把所有纯文本、Markdown、代码文件都设为VS Code打开。
- 影响范围:仅当前用户,不需要
sudo权限。 - 优先级:所有GUI相关默认设置里优先级最高,会覆盖系统级的
defaults.list。 - 小技巧:你可以直接在
[Default Applications]section下加一行,比如text/plain=code.desktop,就能把所有纯文本文件默认用VS Code打开。
4. update-alternatives(系统级/用户级CLI工具)
这个工具是用来管理系统中同一类功能的多个替代程序的,既能管CLI也能管部分GUI:
- 适用场景:统一管理系统层面的替代工具,比如文本编辑器、终端浏览器、GUI浏览器等。比如你想用vim代替nano作为系统默认的CLI编辑器。
- 影响范围:分两种——用
sudo update-alternatives --config editor修改的是系统全局(所有用户生效);如果用--install指定用户目录的路径,也可以只针对当前用户生效。 - 优先级:对于CLI来说,它管理的是系统符号链接(比如
/usr/bin/editor会指向你选的编辑器),所以CLI里调用editor命令时会用它。对于GUI,它管理的是比如x-www-browser这样的链接,部分GUI程序可能会调用这个,但优先级低于mimeapps.list。 - 特点:能同时影响CLI和部分GUI,但主要是针对「命令别名」的管理,比如系统工具
crontab -e会调用editor命令,这时候就会用你通过update-alternatives设置的默认编辑器。
5. export EDITOR=<editor>(用户级环境变量)
这是纯CLI层面的设置,完全和GUI无关:
- 适用场景:给当前用户的CLI会话指定默认文本编辑器,比如让git commit时默认用vim打开编辑框。
- 影响范围:默认只在当前shell会话生效;如果要永久生效,需要把这条命令写到
~/.bashrc、~/.zshrc或者~/.profile里。 - 优先级:CLI场景下优先级最高——即使你用
update-alternatives把editor设为nano,只要你设了export EDITOR=vim,所有读取EDITOR环境变量的程序(比如git、crontab)都会优先用vim。 - 局限性:完全不影响GUI下打开文件的行为,只针对CLI程序。
二、针对文本文件的GUI/CLI默认编辑器设置对比
如果你的需求是「为所有文本文件类型更改默认的GUI与CLI文本编辑器」,这几种方法的区别可以用一张表总结:
| 方法 | 影响GUI打开文本文件? | 影响CLI编辑器调用? | 作用范围 | 优先级 | 适合场景 |
|---|---|---|---|---|---|
| Nautilus右键设默认 | ✅ | ❌ | 当前用户 | 高(用户级GUI) | 新手快速设置GUI默认 |
/usr/share/applications/defaults.list | ✅ | ❌ | 所有用户 | 低(系统级GUI) | 给整个系统设置GUI默认模板 |
~/.local/share/applications/mimeapps.list | ✅ | ❌ | 当前用户 | 最高(用户级GUI) | 手动批量修改GUI默认 |
update-alternatives | ✅(部分GUI程序) | ✅ | 系统全局/当前用户 | 中(CLI系统级) | 统一管理系统层面的CLI/GUI替代工具 |
export EDITOR=<editor> | ❌ | ✅ | 当前用户(会话/永久) | 最高(CLI用户级) | 自定义个人CLI会话的默认编辑器 |
最后总结一下
- 只改GUI默认编辑器:用Nautilus右键(简单)或编辑
mimeapps.list(灵活批量改); - 改所有用户的GUI默认:编辑
defaults.list(需要sudo); - 改CLI默认编辑器:优先用
export EDITOR(永久写到shell配置文件,个人定制化),或者用update-alternatives(系统全局统一设置); update-alternatives是中间层,既能管CLI也能影响部分GUI,但GUI场景下还是mimeapps.list的优先级更高。
内容的提问来源于stack exchange,提问作者vstepaniuk




