Mac上可五种方法精准设定文件默认打开应用:一、右键+Option选“始终以此方式打开”;二、简介面板点“全部更改”;三、拖文件到App图标确认;四、终端用duti命令绑定;五、defaults命令直写LaunchServices数据库。

如果您在Mac上双击某个特定格式的文件(例如 .pdf、.md 或 .log),却总是被错误的应用打开,说明该扩展名或UTI类型当前绑定的默认程序不符合您的需求。以下是针对单一文件格式精确设定默认软件的多种操作方法:
一、通过右键菜单使用“始终以此方式打开”快速绑定
此方法直接触发LaunchServices对指定扩展名的默认应用注册,无需打开额外窗口,响应即时,适用于已知扩展名且目标应用出现在上下文菜单中的场景。
1、在访达(Finder)中找到任意一个该格式的文件(如 report.pdf)。
2、按住 Option 键不放,再右键点击该文件。
3、此时上下文菜单中的“打开方式”项将变为灰色的“始终以此方式打开”。
4、松开Option键,点击该选项,在弹出的子菜单中选择您希望设为默认的目标应用(如 Skim 或 Adobe Acrobat)。
5、系统立即完成扩展名级绑定,所有同后缀文件后续双击均调用该应用。
二、通过“显示简介”面板执行全局批量更改
该方式作用于整个文件类型(基于扩展名及对应UTI),一次设置即覆盖当前用户下所有现有及未来生成的同类文件,是系统推荐的标准操作路径。
1、在访达中选中一个该格式的目标文件(如 notes.md)。
2、按下 Command + I 快捷键,打开“显示简介”窗口。
3、在“打开方式”区域点击右侧下拉箭头,从列表中选择期望的默认应用(如 Obsidian 或 Typora)。
4、点击下拉菜单正下方的“全部更改”按钮。
5、在弹出的确认对话框中点击“继续”,系统更新该类型文件的全局打开关联。
三、使用拖拽法将文件直接绑定至目标应用图标
此方法绕过系统菜单逻辑,利用macOS图形化拖放机制触发LaunchServices自动注册,对未在“打开方式”列表中显示的应用(如 VS Code、Bear、或自定义打包应用)尤为有效。
1、确保目标应用已正确安装,且其图标可在Dock或“应用程序”文件夹中可见。
2、将该格式的一个样本文件(如 config.json)直接拖拽至目标应用图标上。
3、松开鼠标后,系统弹出提示:“是否使用此应用程序打开所有 .json 文件?”
4、点击“使用”,系统立即建立扩展名与应用的默认绑定关系。
四、通过终端命令使用 duti 工具强制指定默认程序
duti 是专为macOS设计的命令行工具,支持按扩展名或UTI精确强制设定默认应用,适用于脚本化批量配置、图形界面失效或处理非标准扩展名等高级场景。
1、若尚未安装 duti,先在终端中运行:brew install duti。
2、执行绑定命令,例如将所有 .log 文件设为由 Console.app 打开:duti -s com.apple.Console .log all。
3、若需绑定UTI类型(如 public.plain-text),可先用命令获取文件UTI:mdls -name kMDItemContentType /path/to/sample.file。
4、再执行UTI绑定命令,例如:duti -s com.apple.TextEdit public.plain-text all。
五、通过 defaults 命令直接写入 LaunchServices 数据库
该方法绕过GUI层,直接修改 com.apple.LaunchServices/com.apple.launchservices.secure 配置项,适用于需精细控制LSHandlerRoleAll角色、或处理系统未识别UTI的极端情况。
1、打开“应用程序 → 实用工具 → 终端”。
2、执行以下命令添加新绑定规则,例如将 .txt 文件强制绑定到 TextEdit:defaults write com.apple.LaunchServices/com.apple.launchservices.secure LSHandlers -array-add '{LSHandlerContentType=public.plain-text;LSHandlerRoleAll=com.apple.TextEdit;}'。
3、替换命令中 public.plain-text 为您实际需要的UTI(可用 mdls 查询),并将 com.apple.TextEdit 替换为目标应用Bundle ID(可通过 osascript -e 'id of app "App Name"' 获取)。
4、执行完毕后,运行 killall Finder 刷新界面,使新绑定立即生效。










