mac效率提升:批量设置文件默认打开方式

📅 2026/7/8 19:50:31 👁️ 阅读次数 📝 编程学习
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 IDosascript -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 all

2. 系统兜底设置

这一步是点睛之笔

macOS 用 UTI(Uniform Type Identifier)来标识文件类型,而不是扩展名。如果你把系统最基础的 UTI 也指向 CotEditor,那对于那些没有扩展名、或者扩展名不在你设置范围内的文件,系统也会自动回退到 CotEditor 打开

duti-scom.coteditor.CotEditor public.plain-text all duti-scom.coteditor.CotEditor public.data all
  • public.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 all

Python / 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
CotEditorcom.coteditor.CotEditor
TextEditcom.apple.TextEdit
Xcodecom.apple.dt.Xcode
VS Codecom.microsoft.VSCode
Sublime Textcom.sublimetext.4
BBEditcom.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一行命令搞定,一次设置,永久生效


如果这篇文章对你有帮助,欢迎点赞、推荐、转发三连。你的每一次支持,都是我继续写下去的动力。