macOS 在访达右键用 VS Code 打开文件或文件夹

在 Windows 上,右键用编辑器打开文件或文件夹是很常见的操作。到了 macOS,如果你也想在 访达(Finder)里右键直接用 VS Code 打开,最稳的做法不是手写 .workflow 文件,而是直接用 Automator 新建“快速操作”

这样做有几个好处:

  • 系统原生支持,兼容性更稳
  • 能同时支持 文件文件夹
  • 重装系统或换机器后,照着再配一次也很快

这篇就把完整做法整理一下,后面需要时可以直接照着操作。


最终效果

配置完成后,在 Finder 里:

  • 右键某个文件
  • 或右键某个文件夹

你就能在 “快速操作”“服务” 菜单里看到:

1
Open in VS Code

点一下,就会直接用 VS Code 打开目标文件或目录。


一、先确认 code 命令可用

在 macOS 里,Automator 本质上还是通过命令调用 VS Code,所以第一步要先确认终端里能直接使用 code

打开 VS Code,按下:

1
Cmd + Shift + P

然后搜索并执行:

1
Shell Command: Install 'code' command in PATH

执行完成后,打开终端检查:

1
which code

如果输出类似下面这样,说明已经配置成功:

1
/opt/homebrew/bin/code

如果没有输出,也别急,后面脚本里我也会顺手兼容几种常见路径。


二、用 Automator 创建 Finder 右键菜单

1)打开 Automator

先打开:

1
自动操作 / Automator

然后:

  • 点击 新建文稿
  • 选择 快速操作

这里一定要选“快速操作”,不要选应用程序,也不要选其他工作流类型。


2)设置接收对象和作用位置

在窗口顶部,把工作流设置成下面这样:

  • 工作流程收到当前文件或文件夹
  • 位置访达

这一步非常关键。

如果这里设置错了,最常见的结果就是:

  • Finder 右键菜单里根本看不到这个服务
  • 或者只能处理一部分目标,体验不完整

3)添加“运行 Shell 脚本”动作

在左侧搜索框里输入:

1
运行 Shell 脚本

把它拖到右侧工作区,然后把参数设置成:

  • Shell/bin/zsh
  • 传递输入作为参数

这里选“作为参数”也很重要,因为 Finder 选中的文件或文件夹路径会通过参数传进来。


4)填入脚本

把下面这段脚本粘进去:

1
2
3
4
for f in "$@"
do
/opt/homebrew/bin/code "$f" || /usr/local/bin/code "$f" || code "$f"
done

这段脚本的意思很简单:

  • 先尝试 Apple Silicon Mac 常见路径:/opt/homebrew/bin/code
  • 再尝试 Intel Mac 常见路径:/usr/local/bin/code
  • 最后再尝试系统 PATH 中的 code

这样写的好处是:

  • 兼容不同芯片和安装方式
  • 少踩路径不一致的坑
  • 换机器时成功率更高

5)保存快速操作

按下:

1
Cmd + S

名称建议直接保存成:

1
Open in VS Code

保存后,系统通常会把它放到:

1
~/Library/Services/

后面如果你想备份、迁移或者删除这个服务,也可以到这里找。


三、重启 Finder

保存完成后,建议重启一下 Finder,让新服务尽快生效。

在终端执行:

1
killall Finder

Finder 会自动重新打开,不用担心。


四、测试是否生效

回到 Finder,任选一种方式测试:

  • 右键某个文件
  • 右键某个文件夹

然后查看下面两个位置:

  • 快速操作
  • 服务

如果一切正常,你应该能看到:

1
Open in VS Code

点击之后,VS Code 就会直接打开对应的文件或目录。


五、常见问题排查

1)右键菜单里看不到 “Open in VS Code”

优先检查这三项:

检查 1:Automator 顶部设置是否正确

必须是:

  • 文件或文件夹
  • 访达

只要这里选错,右键菜单就很可能不会显示。

检查 2:服务是否被系统关闭

打开:

1
系统设置 → 键盘 → 键盘快捷键 → 服务

看一下 Open in VS Code 有没有被禁用。

检查 3:重启 Finder

1
killall Finder

很多时候,保存完服务但菜单还没刷新,重启 Finder 就好了。


2)菜单能看到,但点击后提示“服务无法运行,配置不正确”

这种情况通常说明:

  • 这个 .workflow 是手写出来的
  • 工作流结构不完整
  • 动作参数和 Finder 传入格式不匹配

这也是为什么我不太建议手写 workflow XML。

最稳的解决办法不是继续硬改文件,而是直接重新用 Automator 图形界面新建一个快速操作。

可以简单理解为:

  • 手写 workflow:可能“显示出来了”,但不一定真能跑
  • 用 Automator 新建:更符合系统预期,成功率更高

3)终端里找不到 code

在终端执行:

1
which code

如果没有输出,就回到 VS Code 里重新执行:

1
Shell Command: Install 'code' command in PATH

执行完之后,建议:

  • 关闭当前终端窗口
  • 重新打开终端
  • 再运行一次 which code

这样通常就恢复正常了。


六、为什么推荐 Automator,而不是手写 workflow

如果你只是想要一个 稳定、可长期复用 的 Finder 右键入口,那 Automator 其实就是最省事的解法。

原因很简单:

  1. Finder 对服务的识别和运行有自己的规则
  2. 手写 .workflow 文件容易出现“菜单显示了,但点击报错”
  3. Automator 生成的结构更符合 macOS 的预期
  4. 出问题时也更容易排查

所以这类需求,优先追求“稳”和“省事”,比追求“能不能纯手写”更实用。


七、最省事的做法总结

如果你只想快速搞定这件事,按下面四步走就够了:

  1. 在 VS Code 里安装 code 命令
  2. 用 Automator 新建一个“快速操作”
  3. 脚本里调用 code
  4. 重启 Finder 并测试

基本上这样一次就能配好,后面迁移到新机器时也很好复用。


八、可直接复制的脚本

最后把脚本单独贴一次,方便直接复制:

1
2
3
4
for f in "$@"
do
/opt/homebrew/bin/code "$f" || /usr/local/bin/code "$f" || code "$f"
done

如果你后面还想继续折腾,也可以再扩展成:

  • 右键“用 Cursor 打开”
  • 右键“用终端打开当前目录”
  • 右键“在 iTerm 中打开”

但如果只是为了解决 Finder 里右键用 VS Code 打开文件或文件夹,这套已经够稳、够省事了。