需求
在使用 Mac 的过程中,在终端打开当前目录是一个常见的需求。之前可以通过 xtraFinder 等 Finder 的扩展实现这个需求,但在 macOS 10.12 之后,这类扩展程序只能在禁用系统文件保护的情况下才能使用。
作为一个强迫症患者,无法忍受禁用系统文件保护带来的风险,但又十分需要这个功能,怎么办?
方案
于是我开始研究如何使用系统提供的方案来实现需求,经过不懈的努力,找到了很多过期资料,虽然在新版系统上已经无法使用,但是给了我一个思路。
尝试过多个方案,使用 Automator 配合 AppleScript 的解决方案,应该是目前的最优解决方案。
基本步骤是:
1. 获取 Finder 当前文件夹的路径。
2. 激活 iTerm2。
3. 如没有窗口则创建窗口。
4. 当前 Tab 正在使用则创建新 Tab。
5. 在 Tab 会话中输入 cd 命令并执行。
为了搞清楚 iTerm2 可调用的函数和属性,在 AppleScript 脚本编辑器里,打开 iTerm2 的字典研究了好一阵。
实现
下面是 AppleScript 的代码,简单的几行,相信大家都能看得懂。
|
|
如果使用的是 zsh,可使用 cdf
进入 Finder 的当前目录,则脚本可简化为:
|
|
在实现方式上,有两种方案:
1. 右键菜单方式
2. Finder 工具栏图标方式
实际使用时,Finder 工具栏图标方式的易用性感觉要更高一些,下面分别讲一下两种方式如何实现。
右键菜单方式
在 xtraFinder 等插件中,一般是将打开终端功能集成到右键菜单中的,这也是最直观的调用方式。
1. 启动 Automator,新建文稿,并选择 服务,点击选取。
2. 将 “服务收到选定的” 改为 文件夹,将 “位于” 改为 Finder.app。
3. 选择 资源库 中 实用工具 里的 运行 AppleScript,双击添加,并贴入上面的代码。
4. 点击 运行,测试一下脚本是否可以正常运行。
5. 按 Cmd + S 保存服务,命名可设定为 “在 iTerm 打开” 或者其他自定义名称。
现在,在 Finder 中的文件夹上点击右键,服务菜单中应该已经有刚刚保存的服务了。
Finder 工具栏图标方式
在实际使用中,发现右键菜单方式使用起来不太方便。因为服务菜单一般有较多项目,是折叠起来的,需要两次点击才能完成操作。 而 Finder 工具栏图标方式能很好的解决这个矛盾,下面看看怎么实现这种方式。
1. 启动 Automator,新建文稿,并选择 应用程序,点击选取。
2. 选择 资源库 中 实用工具 里的 运行 AppleScript,双击添加,并贴入上面的代码。
3. 点击 运行,测试一下脚本是否可以正常运行。
4. 按 Cmd + S 保存应用程序,命名可设定为 “在 iTerm 打开” 或者其他自定义名称。
5. 在 Finder 中找到保存的应用程序位置,按住 Option + Cmd 组合键,将应用程序拖到 Finder 工具栏上。
现在,点击 Finder 工具栏中应用程序图标,就可以在 iTerm 中打开当前目录了。
结语
其实 Mac 上有很多功能强大的工具,就比如 Automator,大多数主流的应用程序也都提供了 AppleScript 支持,仔细研究一下发现能做相当多的事情。
通过一些简单的编码,使用系统提供的功能完成了需求,也不需要对破坏系统的安全策略,还是很有成就感的。