mac效率提升:批量设置文件默认打开方式
花 5 分钟学会一个命令,从此双击任何文件,都能用你喜欢的软件打开——再也不用每次手动选。
你是不是也遇到过这种事?
用 mac的朋友大概都有过这种经历:双击一个.rs文件,蹦出来 Xcode;点一下.go,又跳出来 VS Code;.py 是 PyCharm,.js 是 WebStorm……
每天切换七八个编辑器,点一下文件弹一个不一样的程序,效率很低,体验也很割裂。
更崩溃的是,你明明已经装了喜欢的编辑器——比如 VS Code、Sublime Text 或者 CotEditor——但系统就是不用它。每次都要右键 → 打开方式 → 从列表里找 → 点击打开,一天下来重复几十遍。
有人说,这不是什么大事,忍忍就过去了。但问题是,这种事每天会发生几十次。每一次多花 3 秒钟,一年下来就是好几个小时的纯粹浪费。更别提那种"被系统牵着走"的烦躁感了。
mac其实有一个彻底的解决方法:用一行命令,批量设置某类文件的默认打开方式。而你只需要一个极小的命令行工具duti。
duti 是什么?
它是一个开源的 macOS 命令行工具,用来查看和管理系统中的默认应用关联(UTI / file association)。
它的核心能力就两件事:
- 查看:某个扩展名当前用什么程序打开
- 设置:把某个扩展名改成用指定程序打开
关键特点是:一行命令,立即生效,不需要打开"系统设置"点来点去。
它有多大呢?只有几十 KB,比你手机上一张表情包还小。没有界面,没有弹窗,就在后台安安静静地帮你干活。
安装(一条命令搞定)
打开 Mac 自带的"终端"(按Command + 空格搜索"终端"),输入下面这一行:
brewinstallduti等几秒钟,就装完了,可以立即使用。就这么简单。
如果还没有安装 Homebrew,可以先在终端里运行下面命令来安装:
/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"安装完 Homebrew 后,再执行上面的
brew install duti就行了。
核心命令速查
学会这四个命令,基本就够用了:
| 做什么 | 命令 |
|---|---|
| 查看某扩展名默认应用 | duti -x pdf |
| 设置某扩展名的默认应用 | duti -s <Bundle ID> .<ext> all |
| 查看某应用的 Bundle ID | osascript -e 'id of app "应用名称"' |
Bundle ID 是 macOS 给每个应用的唯一标识,格式类似com.apple.TextEdit。上面最后一行命令就是用来查它的。
实操:把 CotEditor 设为所有代码文件的默认编辑器
这里用一个实际场景来演示。
我有一个很喜欢用的轻量编辑器叫CotEditor(macOS 平台上口碑很好的开源编辑器)。我想把它设为所有代码、配置、脚本文件的默认打开方式,让每次双击都默认使用它打开。
CotEditor 的 Bundle ID 是com.coteditor.CotEditor,确认一下:
osascript-e'id of app "CotEditor"'# 输出: com.coteditor.CotEditor好,开始批量设置。
1. 文本与配置文件
日常最常遇到的几类:
duti-scom.coteditor.CotEditor .txt all duti-scom.coteditor.CotEditor .conf all duti-scom.coteditor.CotEditor .log all duti-scom.coteditor.CotEditor .cfg all duti-scom.coteditor.CotEditor .toml all2. 系统兜底设置
这一步是点睛之笔。
macOS 用 UTI(Uniform Type Identifier)来标识文件类型,而不是扩展名。如果你把系统最基础的 UTI 也指向 CotEditor,那对于那些没有扩展名、或者扩展名不在你设置范围内的文件,系统也会自动回退到 CotEditor 打开。
duti-scom.coteditor.CotEditor public.plain-text all duti-scom.coteditor.CotEditor public.data allpublic.plain-text:所有纯文本文件public.data:所有数据文件(最基础的兜底类型)
这样一来,除非你明确指定了其他应用,否则 CotEditor 就是默认中的默认。
3. 所有编程语言文件
Rust / Go / C / C++ / Shell / INI:
duti-scom.coteditor.CotEditor .rs all duti-scom.coteditor.CotEditor .go all duti-scom.coteditor.CotEditor .C all duti-scom.coteditor.CotEditor .cpp all duti-scom.coteditor.CotEditor .cxx all duti-scom.coteditor.CotEditor .cc all duti-scom.coteditor.CotEditor .sh all duti-scom.coteditor.CotEditor .ini allPython / CSS / JavaScript / TypeScript:
duti-scom.coteditor.CotEditor .py all duti-scom.coteditor.CotEditor .pyw all duti-scom.coteditor.CotEditor .pyi all duti-scom.coteditor.CotEditor .css all duti-scom.coteditor.CotEditor .js all duti-scom.coteditor.CotEditor .mjs all duti-scom.coteditor.CotEditor .cjs all duti-scom.coteditor.CotEditor .jsx all duti-scom.coteditor.CotEditor .ts all duti-scom.coteditor.CotEditor .tsx all duti-scom.coteditor.CotEditor .mts all duti-scom.coteditor.CotEditor .cts all小提示:你可以一次性把上面所有命令复制到一个文本文件里(比如叫
setup.sh),以后换了新 Mac 或者帮朋友设置,运行一次就全好了。
4. 一个注意点
HTML 文件(.html/.htm)在 macOS 系统内部被标记为public.html类型,duti 对它有内置保护(会报error -54),改不了。这是系统级限制,不影响其他所有文件类型。
最终效果
一次操作下来,CotEditor 已成为以下25 个扩展名 + 2 个系统 UTI的默认打开方式:
.txt, .conf, .log, .cfg, .toml, .rs, .go, .C, .cpp, .cxx, .cc, .sh, .ini, .py, .pyw, .pyi, .css, .js, .mjs, .cjs, .jsx, .ts, .tsx, .mts, .cts
双击任意代码文件,直接走 CotEditor 打开。现在不需要再在Mac Dock 上切来切去,也不需要右键 → 打开方式 → 选择程序。
不想用 CotEditor?换成你喜欢的软件
思路完全一样,只是 Bundle ID 不同。这里列出几个常用编辑器的 ID,直接替换命令里的 ID 即可:
| 编辑器 | Bundle ID |
|---|---|
| CotEditor | com.coteditor.CotEditor |
| TextEdit | com.apple.TextEdit |
| Xcode | com.apple.dt.Xcode |
| VS Code | com.microsoft.VSCode |
| Sublime Text | com.sublimetext.4 |
| BBEdit | com.barebones.bbedit |
比如你用的是 VS Code,把上面的com.coteditor.CotEditor全部替换成com.microsoft.VSCode就行。
需要注意的地方
HTML 文件改不了:.html和.htm文件在 Mac 系统内部有特殊保护,duti 会报一个error -54的错误,改不了默认打开方式。这是苹果的系统级限制,不是 duti 的问题。好在 HTML 文件默认是浏览器打开,大多数情况下也不需要修改。
设置后立刻生效:不需要重启电脑,也不需要注销。命令执行完的那一刻就生效了。
怎么改回来?如果想恢复某个文件类型的默认打开方式,用同样的命令指定另一个软件的 ID 就行。比如想改回系统自带编辑器:duti -s com.apple.TextEdit .txt all。
总结
duti这个东西很小,但它解决的是 mac上最日常、最繁琐的一个痛点——文件双击后蹦出哪个程序,这件事每天会发生几十次,每次都要切一次,积少成多就是巨大的时间浪费。
好消息是,你只需要花 5 分钟,用duti一行命令搞定,一次设置,永久生效。
如果这篇文章对你有帮助,欢迎点赞、推荐、转发三连。你的每一次支持,都是我继续写下去的动力。