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 设为所有代码文件的默认编辑器这里用一个实际场景来演示。我有一个很喜欢用的轻量编辑器叫CotEditormacOS 平台上口碑很好的开源编辑器。我想把它设为所有代码、配置、脚本文件的默认打开方式让每次双击都默认使用它打开。CotEditor 的 Bundle ID 是com.coteditor.CotEditor确认一下osascript-eid 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 用 UTIUniform 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 / INIduti-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 / TypeScriptduti-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 IDCotEditorcom.coteditor.CotEditorTextEditcom.apple.TextEditXcodecom.apple.dt.XcodeVS Codecom.microsoft.VSCodeSublime Textcom.sublimetext.4BBEditcom.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一行命令搞定一次设置永久生效。如果这篇文章对你有帮助欢迎点赞、推荐、转发三连。你的每一次支持都是我继续写下去的动力。