NO.140 為文件設置多種快速打開方式 實用技巧
使用 Mac 不可避免的要與各種文件打交道,但即使對於同樣的文件格式,我們有時也希望使用不同的 App 來打開,舉個例子:日常我的主力編輯器是 Sublime,.md、.txt、.conf、.js等純文本文件的默認打開方式都是 Sublime,但是有時我希望使用 Typora 編輯某個 Markdown 文件,使用 VSCode 編輯某個 JavaScript 文件;同樣的,.png、.jpg等大部分圖像文件都是默認使用 Preview 打開,但是有時我需要使用Pixelmator編輯、用Squash壓縮。
在這種需求下,無論是「右鍵 → 打開方式 → 選擇需要的 App」,亦或是使用 LaunchBar 的 Instant Send 功能,皆不勝其煩。
可以製作一個 Keyboard Maestro Macro 並指定快捷鍵(比如我用的是Hyper-O,即Control-Option-Shift-Command-O)來簡化流程:選中.md文件,按下Command-O(默認打開方式)使用 Sublime 打開,按下Hyper-O使用 Typora 打開;選中.js文件,按下Command-O使用 Sublime 打開,按下Hyper-O使用 VSCode 打開。
你可以點擊這裡下載已經完成的 Macro。
Macro 製作 一些概念
這個 Macro 能夠得以簡單實現倚賴於 Keyboard Maestro 內建的Get File Attribute這個動作,通過這個動作可以很輕鬆的得到某個文件的大小、名字、修改日期和擴展名等屬性,並存到變數中,減輕了我們的工作量。
Collection(集合)是 Keyboard Maestro 中的一個概念,用於For Each這個 Action,集合可以是剪貼板歷史、Dictionaries字典、變數等,這裡把 Finder 中的選擇項(Finder Selection)作為集合。在 Macro 執行時,For Each 動作會循環遍歷集合中的每個項目(這裡是每個選中 Finder 文件),並執行 For Each 中包裹的動作。
流程
新建一個 Macro,命名為「Open File in Another Way」,指定快捷鍵,添加 For Each 動作:
For Each
每個 Finder Selection collections 中的文件會保存到OFAW_File這個臨時變數中,隨後 Get File Attribute 動作會獲取當前OFAW_File的拓展名,保存到OFAW_Ext變數中。
接下來Switch動作會根據不同的 OFAW_Ext 值,即不同的文件類型,進行不同的操作。Switch 的判斷條件使用的是 matches 類型,會進行正則表達式匹配。這裡的(?!)為搜索修飾符(Search Modifiers),用於忽視大小寫。
對於圖中的動作,在 Finder 中選中圖片文件,執行 Macro 後,會使用 Pixelmator 打開;選中 md 文件時,會使用 Typora 打開。因為 Swich 動作包含在 For Each 中,所以即使同時選擇了多個文件也沒問題。
最後添加 Otherwise,當未指定其他打開方式時,使用默認方法打開。
Otherwise
清理變數
為了避免以後可能遇到奇奇怪怪的問題,流程結束後記得清理變數,即將變數值設為%delete%。
Bonus
現在這個 Macro 已經能跑起來了,但是沒完,可以做的還有很多。
為一種文件制定多種打開方式:
我們使用圖像處理應用有很多,一個 Pixelmator 怎麼夠?
添加一個Prompt With List動作(需要版本 8 及以上),將用的到的圖像處理 app 的絕對路徑分行填入,保存到OFAW_HandleMethod變數中,隨後執行 Shell 腳本open -a "$KMVAR_OFAW_HandleMethod" "$KMVAR_OFAW_File",如圖:
open 命令是一個 NeXTSTEP 時期出現的命令行工具,也是現在 Mac 獨有的命令行工具,與其他命令行工具不同,他和圖形界面結合很緊密:
shellopen https://sspai.com/# 使用默認瀏覽器打開少數派open somearticle.md# 默認編輯器打開 markdown 文件open .# 在 Finder 中打開當前工作目錄open dash://man:open# Dash 的 URL Scheme,在 Dash 中查看 open 的 manual
如果添加-a旗幟,可以為文件指定打開的 App:
open -a /Applications/TextEdit.app ~/demo.txt# 使用 TextEdit 打開 demo.txt
因為 Keyboard Maestro 的運行 Shell 腳本動作中對字元串的處理方式原因,有空格時,不是直接傳入一行字元串,而是一個字元串數組,所以一定要將變數用雙引號括起來。如一個 Shell 腳本:open -a "$KMVAR_OFAW_HandleMethod" "$KMVAR_OFAW_File"會分為:
open-a$KMVAR_OFAW_HandleMethod 的變數值$KMVAR_OFAW_File 的變數值
分別傳入,應用路徑和文件路徑中經常會有空格,所以要用雙引號括起來。這裡解釋的很詳細。
完成後對於圖片文件,按下快捷鍵後就有了多個選擇。
打開包文件
同樣的思路,.app、.lbaction等 bundle 文件(既右鍵中有「顯示包內容」選項的文件),我對他們的處理方式為運行一段 Apple Script:
tell application "Finder" try set selectedItems to selection set selectedItem to item 1 of selectedItems as alias open folder ((selectedItem as string) & "Contents:") on error display dialog "You must select a package before running this script."
※CBA7場比賽後再得分,張慶鵬賽後感謝球迷
※跟老周遊瑞士13:瑞士龍蝦命好?養老院才令人羨慕!
TAG:齊魯壹點 |