Alfred 效率神器使用手冊!給力~

Alfred 效率神器使用手冊!給力~

作者:louis來源:louiszhai。github。io/2018/05/31/alfred/

我曾經耗費巨大的精力,試圖在計算機的使用效率上找到一條最佳化的捷徑,一直以來都收效甚微。直到遇上 alfred,它強大的工作流機制,

徹底解決了輸入輸出的痛點,極大的減少了程式之間的切換成本和重複按鍵成本

,這才讓我明白,原來計算機可以這麼玩。

神奇的魔法帽,alfred 初印象。

圖片

如何安裝alfred

首先可以從 alfred官網 自行下載安裝,免費使用者可以使用除 workflow 以外的其它功能,如需使用 workflow,則需要購買Powerpack。

一個例子說明為什麼要用alfred

以前,使用mac查詢一個單詞,或者翻譯一個單詞,我們要麼經歷五步:

手動開啟瀏覽器

進入谷歌首頁

選中輸入框

輸入或貼上查詢單詞,然後空格並加上”翻譯” 兩個字,然後再回車

等待瀏覽器展示查詢結果;

要麼經歷四步:

開啟翻譯應用(比如自帶詞典)

輸入或貼上查詢單詞

翻譯應用輸出查詢結果

查詢過後,一般都需要Cmd+Q退出應用(或者Cmd+H隱藏詞典,亦或Cmd+Tab切換回上一個應用)

查詢單詞這個場景中,我們至少需要興師動眾,切換或開啟一個應用兩次,定位輸入框一次,輸入或複製貼上一次。且查詢結果頁也會擋住當前的工作區,使得我們分心,甚至忘記自己剛剛在做啥,總之,體驗極不流暢。

alfred 工作流正是為了解決這個問題而設計的。使用 workflow,

最快只需兩次按鍵便可查詢單詞

。 舉個栗子:為了查詢單詞 “workflow”,我會選中單詞所在區域,然後按住 Option+Y 鍵(我已將有道翻譯的快捷鍵設定為 Option+Y),單詞查詢結果就出來了,不需要切換應用,同時查詢結果也較少的擋住工作區。如下所示:

Alfred 效率神器使用手冊!給力~

圖片

兩次按鍵就能查詢單詞,這麼好的應用為何不用呢?

alfred能做什麼?

對於一個剛剛聽說alfred的新手來說,迫切想知道的莫過於瞭解它能做什麼?據我所知,公開的 alfred workflow 至少有 500+,有心網友甚至羅列了一張 表格來管理它,表格的每一行都解鎖了一項 alfred 技能(注意並非所有的 workflow 都支援最新的 alfred 3。6。1版本)。你可以下載並免費使用其中任何一個 workflow,甚至,還可以基於一些不錯的 workflow 樣本,加入創意,改造成屬於自己的 workflow(前提是已獲得 powerpack license)。

預設情況下,alfred 至少能勝任 15 項工作:

應用搜索

檔案或目錄搜尋

文字內容搜尋

標記搜尋

快捷網頁搜尋

書籤搜尋

計算器

詞典搜尋

通訊錄搜尋

剪下板搜尋

程式碼片段搜尋

iTunes管理

1Password搜尋

系統常用命令快捷操作

直接喚起指定終端並執行命令

獲得 powerpack license 的 alfred 將獲得強大的 workflows 功能,後續將專門講解。

1。應用搜索

輸入應用名,列出本地安裝的所有相關應用,可以快速喚起。

Alfred 效率神器使用手冊!給力~

圖片

2。 檔案或目錄搜尋

輸入 find 或 open 命令,以及待搜尋的檔案或目錄名,列出磁碟中的相關檔案,可以快速定位 finder,相當於一個簡易的 EasyFind。

Alfred 效率神器使用手冊!給力~

alfred-find

3。 文字內容搜尋

輸入 in 命令,以及待搜尋的文字,列出磁碟中包含該文字的相關檔案,可以快速定位檔案,相當於簡易的終端 find 命令。

Alfred 效率神器使用手冊!給力~

alfred-in

4。 標記搜尋

輸入 tags 命令,以及待搜尋的標記顏色中文名稱,列出打上相應標記的目錄,可以快速定位標記目錄。

Alfred 效率神器使用手冊!給力~

alfred-tags

以上 2、3、4 展示的搜尋能力,僅僅是 alfred 提供的冰山一角的小功能(對應於 alfred preferences 面板(喚起)— features 欄— file search 功能,如下圖所示),理論上可以進行全盤搜尋,但由於效能原因,截止 alfred 3。6。1,預設至多展示前40個搜尋結果。

Alfred 效率神器使用手冊!給力~

alfred-features

對於通常的搜尋而言,完全沒必要進行全盤搜尋,因此只將當前使用者目錄加進去即可,請參考下圖新增使用者目錄:

Alfred 效率神器使用手冊!給力~

alfred-default-results

5。 快捷網頁搜尋

alfred 可以非常方便的開啟指定網頁(alfred preferences 面板— features 欄— web search),這是一個非常貼心的小功能。預設情況下,alfred 自帶了 wiki、twitter、ebay、bing、gmail、yahoo、linkedin、youtube、facebook 等幾十種網站的連結,你可以輸入關鍵字如『wiki』空格後再輸入搜尋內容,最後再回車開啟 wiki 網站,如下所示:

Alfred 效率神器使用手冊!給力~

alfred-wiki

也可以點選此處右下角『Add Custom Search』按鈕新增你常用的網頁搜尋,如下所示:

Alfred 效率神器使用手冊!給力~

alfred-web-search

6。 書籤搜尋

書籤搜尋是 alfred3。x 版本中新加的功能,方便使用者在瀏覽器的大量書籤中快速搜尋。

Alfred 效率神器使用手冊!給力~

alfred-web-bookmarks

7。 計算器

alfred 預設提供計算的能力,如下所示。

alfred-calculator

輸入,還能進行復雜運算,如下。

alfred-calculator02

8。 詞典搜尋

實際上,自帶的詞典搜尋功能不是很理想,建議搭配 workflow一起使用。

Alfred 效率神器使用手冊!給力~

alfred-dictionary

9。 通訊錄搜尋

alfred 還可以用來搜尋通訊錄中的聯絡人,如下所示。

圖片

10。 剪下板搜尋

剪下板的管理也是 alfred 的一大亮點,如下所示。

Alfred 效率神器使用手冊!給力~

afred-clipboard

如此一來,複製多段內容就變得非常容易,藉助 alfred,可以在一處連續複製,然後另一處連續貼上,避免了頻繁切換應用帶來的操作疲勞;同時之前複製過的文字或圖片,也不用擔心過會找不到。

程式碼片段搜尋,相對 aText 來說,感覺不是特別方便,略過(aText 是 mac 下輸入增強工具,輸入關鍵字,自動補全文字)。

iTunes管理使用得不多,略過。

1Password由於未安裝,也略過。

11。 系統常用命令快捷操作

透過 alfred 可以快捷地作業系統鎖屏、關機、重啟、休眠等十幾種指令,非常便捷。對於強迫症使用者來說,喚起屏保、休眠、清空垃圾簍、退出應用等指令可能較為常用。

Alfred 效率神器使用手冊!給力~

alfred-system

12。直接喚起指定終端並執行命令

透過 alfred 可以直接喚起終端視窗,並執行命令,如下所示。

Alfred 效率神器使用手冊!給力~

圖片

以上,Application 若選擇『Custom』選項,下方再貼如下一段 applescript 程式碼,便可以直接在

iTerm

中執行命令。

小結

至此 alfred 的 Features 面板功能介紹完畢。alfred 設定介面一共包含10個面板,還有9個面板如下所示:

General(通用,用於設定是否開機啟動,及設定喚起快捷鍵,通常設定為 即可)

Workflows(工作流)

Appearance(外觀,用於設定 alfred 輸入視窗的外觀、字型、顏色等)

Advanced(高階)

Remote(遠端,用於遠端管理,這意味著你需要在 App Store 購買一個 Alfred Remote 的app,然後便可以在手機上遠端操作 mac)

Powerpack(許可證,購買 powerpack 的使用者便可以使用 workflow 功能)

Usage(使用統計)

Help(幫助,提供快速上手文件、使用文件、反饋bug、使用者論壇等連結)

Update(更新日誌,可檢視更新日誌及更新到最新版)

Appearance 面板除了設定輸入視窗的外觀外,還有一些外觀相關的設定,在這裡可以設定預設展示行數等。

Alfred 效率神器使用手冊!給力~

圖片

Advanced 面板包含了一些高階設定,如下所示。

Alfred 效率神器使用手冊!給力~

圖片

Usage 面板包含了你使用 alfred 的資料統計,如下所示。

Alfred 效率神器使用手冊!給力~

圖片

由此可見,幾乎我每天都會用 alfred,3年來總計使用3W+次,平均每天使用27。8次,剔除節假日,工作日每天平均使用次數高達40+次,可以說,alfred 極大的方便了我的工作和生活。

alfred workflow

基本功能介紹完了,終於,我們要一窺 alfred 的核心功能— workflow。工作流可謂是 alfred 最強大的功能,它是秒殺其他效率應用的核心技術,也是最吸引我的地方。

唯有掌握工作流,mac 才能真正起飛。

常用的workflow

欲瞭解工作流,先從常用的 workflow 開始,下面簡單展示一些典型。

ip查詢

圖片

指定 qq 好友聊天

圖片

指定微信好友聊天

圖片

印象筆記搜尋

Alfred 效率神器使用手冊!給力~

圖片

百度地圖搜尋

Alfred 效率神器使用手冊!給力~

圖片

點評搜尋

Alfred 效率神器使用手冊!給力~

圖片

豆瓣電影搜尋

Alfred 效率神器使用手冊!給力~

圖片

豆瓣書籍搜尋

Alfred 效率神器使用手冊!給力~

圖片

知乎日報

Alfred 效率神器使用手冊!給力~

圖片

水木清華社群搜尋

Alfred 效率神器使用手冊!給力~

圖片

php api 搜尋

Alfred 效率神器使用手冊!給力~

圖片

jquery api 搜尋

Alfred 效率神器使用手冊!給力~

圖片

快遞查詢

Alfred 效率神器使用手冊!給力~

圖片

finder 設定

Alfred 效率神器使用手冊!給力~

圖片

舉例就到這了,另外,這裡有我的一些 afred workflows,歡迎試玩。

workflow是什麼

你可能很好奇,上面這些 workflow,都是怎麼開發的呢?別急,穩住慢慢來。

先問一個問題,什麼是工作流?

我們都知道,任何微小的工作,都可以拆分成多個步驟,這些步驟順序相連,依次進行,最終輸出成果,有些步驟可能存在多個分支,並且最終輸出多個成果。

這些步驟依次執行,並且向後傳遞階段性資訊的流,就是工作流

。現實生活中的工作流可能更為複雜,但本質還是如此。正是基於這種現實背景,alfred 從 2。0 版本起加入了 workflow,普通的 workflow 如下所示。

圖片

這個工作流包含三個步驟: 查詢單詞—> 格式化輸出—> 複製到剪下板。

是喚起該工作流的命令,輸入,然後空格,接著輸入待查詢的單詞,便開始執行,最終輸出查詢結果列表(圖片見文章開頭例子),至此,工作流的步驟查詢單詞部分完成。

我們注意到,圖中有兩條資料流連線,第一條包含節點,這意味著,節點處需要等待使用者操作(點選)才能繼續下去。一旦使用者點選列表項,後續流程格式化輸出,將直接執行,緊接著其後續流程複製到剪下板也將順序執行,最終單詞查詢結果複製到剪下板,工作流結束。

實際上,上圖中包含節點的資料流連線,點選時還可指定相應的輔助鍵,輔助鍵可選 、、、、、之一,預設為 ,即無須輔助鍵。指定輔助鍵的好處在於,不同的輔助鍵,可以觸發不同的後續流程,如上圖則只設計一個後續流程(即格式化輸出流程)。設定輔助鍵的介面如下所示,可以指定相應提示,以及流程執行時是否關閉 alfred 視窗。

Alfred 效率神器使用手冊!給力~

圖片

如何建立第一個workflow

是不是躍躍欲試了,來建立第一個 workflow 吧。

首先,開啟 alfred preferences 設定介面,選中第三個面板 Workflows。

點選面板底部左側的 按鈕,選擇 Blank Workflow。

補全 workflow 相關資訊,最後點 按鈕儲存,如下所示。

Alfred 效率神器使用手冊!給力~

圖片

於是第一個空的 workflow 建立好了,接下來我們來搭建一個 google 搜尋的工作流,透過這個工作流,我們能快速的選中文字然後使用 google 搜尋該文字,不妨參考以下步驟。

1)新增熱鍵:右鍵 - Triggers-Hotkey。

2)熱鍵設定面板中:Hotkey 設定為 (快捷鍵必須以 、、 或 開始,而 鍵很少被軟體佔用,推薦作為 alfred 的常用修飾鍵);Argument 選擇『Selection in macOS』(意味著 mac 任何應用選中的文字都會透過 alfred 傳給後面的流程),然後儲存。

4)熱鍵儲存後,繼續新增google搜尋的流程:右鍵 - Actions - Open URL。

5)Open URL 設定面板中:URL 設定為 , 即熱鍵流程中選中的文字(alfred 中,流程透過 關鍵字接收前面傳遞過來的引數),然後儲存。

6)最後,將熱鍵流程和 Open URL 流程連線,至此,google 搜尋的工作流完成。

你還可參考如下圖示。

Alfred 效率神器使用手冊!給力~

圖片

是不是非常簡單?到目前為止,完全不需要程式設計基礎。

workflow支援什麼功能

截止到 v3。6。1 版本,workflow 支援 Triggers、Inputs、Actions、Utilities(alfred3。x新增)、Outputs 共5項主要功能,如下所示。

Alfred 效率神器使用手冊!給力~

圖片

這5項功能一共包含39個元件。其中

輸入包含 Triggers(觸發器)和 Inputs(輸入觸發);Triggers 中的流程可以觸發 Inputs 的流程,反之則不行,同時它們都可以觸發其它後續流程。

輸出即 Outputs,包含了通知,放大展示、複製到剪下板,寫入文字、播放聲音、觸發其它流程等。

中間 Actions 包含開啟檔案、在 finder 中展示檔案、喚起 app、開啟 web search、開啟 URL、執行系統命令、執行 iTunes 命令、執行指令碼、執行 applescript 指令碼、在終端中執行命令等。

Utilities 包含了一些公共元件,如變數設定、json 配置、過濾、轉換、替換、延時、debug 等。

以上,Hotkey、Keyword、Script Filter 是常用的輸入元件,Open URL、Run Script 是高頻的 Action 元件,Post Notification、Copy to Clipboard 是受歡迎的輸出元件,而 Arg and Vars、Filter、Delay、Debug 是貼心的公共元件。

合理搭配相應的元件,我們就能像搭樂高積木一樣搭建 workflow。

哪些語言能編寫workflow

你可能會說沒有程式設計的 workflow 有什麼意思,是的,alfred 除了使用視覺化元件,簡化搭建 workflow 的難度外,還內建了多種語言支援。我們不需要關心語言之間的互動細節,只需要使用它們接收輸入,提供輸出,其它事情統統交給 alfred。

目前,我們可以直接使用如下8種語言編寫指令碼:

bash

zsh

php

ruby

python

perl

applescript

javascript

你沒看錯,javascript 也是預設支援的(jser要瘋狂了)。除了上述8種語言外,透過bash或zsh,一樣可以喚起其它語言,如 java、c、go 等等。

實際上,python 可能是 alfred workflow 中最常用的程式語言,前人編寫了大量的 python 指令碼,都可以在 alfred 中大放光彩。

請注意,以上程式語言可以在這兩個元件中使用: Inputs -> Script Filter、 Actions -> Run Script。

workflow的不足

本文聊了這麼多,workflow的優勢就不多說了。

很明顯,workflow 不是萬能的,很多場景,v3。6。1 的 alfred 還覆蓋不到。比如說:

無法監聽使用者操作,自動錄入工作流。對於大多數人來說,編碼創造工作流的成本太高,alfred 若能監聽一段時間使用者操作,將之轉換成工作流,無疑工作流入門成本會大幅度降低,同時也能彌補 applescript 語言的不足(未提供 applescript 介面的應用幾乎無法程式設計),當然這個要求很高,比如說alfred可能需要獲取輸入時游標所在的螢幕位置,被操作應用的座標、寬高以及輸入源(鍵盤、滑鼠等)的操作等。

沒有視覺化的元件介面,相比 v2。x 版本而言,v3。x 版本中操作依然停留在文字輸入輸出上,若能多些視覺化元件,比如圖片展示,圖文混排等,那麼程式設計的空間將更大。

不支援常駐視窗,且常駐視窗上可以二次程式設計。若能在常駐視窗上放置 todolist、便籤,以及監聽股票走勢等等,那麼,幾乎就能面向 alfred 開發小程式了。

不支援觸控板手勢或 touchbar 直接喚起工作流,手勢輸入或 touchbar 的玩法很多,創意也很多,有很大的想象空間。

當然,可能還有更多更好的 idea,現如今的 alfred 暫不支援,歡迎在評論區回覆交流,一起暢想 alfred 的未來。

我的一些心得

最後,談談我開發 alfred workflow 的一些心得。

關於除錯:

alfred 流程報錯不會有通知和提示,因此一旦 workflow 沒有按照你的期望提供輸出,那就要注意了,開啟 debug 視窗,或引入 Utilities -> Debug 元件,看看有沒有異常輸出。

alfred 雖然支援多種語言的執行,但執行過程中無法單步 debug,這給除錯帶來了挑戰。所以,開發 workflow 時需要及時的進行單元測試,待部分功能完善後,再進行後續開發,避免陷入根據錯誤輸出無法第一時間定位問題的窘境。

關於alfred選項列表輸出:

我們提供輸入,往往是為了獲取輸出列表,然後選擇列表中的一項,執行後續流程。如下所示,列表中的 9 項即

選項列表

Alfred 效率神器使用手冊!給力~

圖片

實際上,選項列表對應一個 xml 配置,工作流中只需輸出配置好的 xml 即可,請參考如下格式。

以上,arg 即往後傳遞的引數,title 標籤內填寫標題,subtitle 標籤內填寫副標題,icon 標籤內填寫當前選項的圖示。然後直接使用 shell 的 echo 列印以上 xml,即可輸出以上選項列表。

xml 中如果包含連結,則 需要替換為 。

關於選項列表多次輸出&流程間呼叫:

很多時候,一次輸入可能不夠,若需要多次輸入資訊,又該如何實現呢?不妨參考如下兩種方案:

選項列表的輸出依賴 Inputs -> Script Filter 元件,若流程中包含多次輸入,順序引入多個 Script Filter 元件即可。

若需要喚起 其它分支流程(同一個 workflow 不同流程)、 其它 workflow 中的流程(跨 workflow 呼叫)或 回到當前流程源頭(重複執行、直到退出),則可給需要喚起的流程頭部插入 Triggers -> External 元件,然後該元件所在流程便可透過 applescript 指令碼喚起。applescript 指令碼如下所示:

這段程式碼的意思是:讓 Alfred 3 應用,帶上引數 “test”,去開啟 Bundle Id為 “com。louis。alfred。CRUD_Module” 的 workflow 中名稱為 “action” 的觸發器所在流程。

以上,方案1實現簡單,不可複用;方案2實現略複雜,優點是可複用。你可以稍微感受下我之前寫的一個CRUD的workflow(主流程使用了 24 個元件),其中 6 次依賴 External 元件串起流程(見圖中紅色下劃線標出部分)。

Alfred 效率神器使用手冊!給力~

圖片

該 CRUD 的 workflow 使用非常簡單,如下演示了新增流程去開啟 iTerm 並執行 命令的過程。

Alfred 效率神器使用手冊!給力~

圖片

注意事項:

根據我的經驗,workflow 開發中還需注意以下幾點:

流程中的節點往後傳遞引數非常簡單,只需往控制檯輸出即可。但須注意,多個控制檯輸出會合併到一起,因此除了往後傳遞引數外,其他情況下都不要往控制檯列印文字。通常控制檯輸出會包含換行符,為避免換行符帶來干擾,推薦使用 (bash) 或 (python);直接執行 js 時,方法內部的return 即往後傳遞引數,此時 輸出到控制檯並不合法。

開發中容易出現 utf-8 編碼的問題,建議程式設計中少用或不用中文註釋,或者過載 utf-8 編碼(python)。

如果需要攜帶引數,去喚起其它應用,applescript 會是個不錯的選擇。

最近面試BAT,整理一份面試資料《

Java面試BATJ通關手冊

》,覆蓋了Java核心技術、JVM、Java併發、SSM、微服務、資料庫、資料結構等等。

文章有幫助的話,在看,轉發吧。

謝謝支援喲 (*^__^*)

頂部