【程式設計師的實用工具推薦】 Mac 效率神器 Alfred

語言: CN / TW / HK

Alfred 是一款功能非常強大,能有效提升 Mac 電腦使用效率的神器。可以說有了 Alfred 你就基本上可以脫離滑鼠實現各種操作。相比 Mac 自帶的聚焦搜尋,完全可以稱得上擁有碾壓性的優勢。

下圖是 Alfred 圖示, 官網為:https://www.alfredapp.com/

在介紹它的使用前,我們先來了解一下它的基本功能。

基本功能介紹

首先使用快捷鍵 Alt + 空格 開啟 Alfred 操作介面。

Alfred 的常用基礎功能為查詢文件、指定網站搜尋、剪下板歷史、整合 iTerm2、計算機字典翻譯、整合 1password、系統功能、放大顯示內容等等 接下來挑選其中幾個為大家做簡單展示。

查詢文件

可以通過以下四種快捷方式進行文件查詢操作:\

  • open: 開啟檔案
  • find: 開啟文件目錄
  • in: 在檔案中搜索
  • tags: 指定檔案標籤

下圖是 find 命令的使用示例。

指定網站進行搜尋

Alfred 可以指定搜尋引擎關鍵詞,簡化搜尋方式。

以自定義百度為搜尋引擎為例,如果我們要讓 bd 作為百度搜索引擎的關鍵詞,那我們可以進行如下配置:

完成配置後就可以使用 bd 關鍵字指定百度作為搜尋引擎了。

剪貼簿歷史

我們可以設定檔案儲存的時長、啟用剪下板的快捷鍵、或者直接使用 clipboard 啟用、使用 clear 清除剪下板。

整合 iTerm2

作為 Mac 最好用的命令列工具 iTerm2,Alfred 也是擁有的。

我們可以對它設定自定義命令,例如:

on alfred_script(q)
 if application "iTerm2" is running or application "iTerm" is running then
  run script "
   on run {q}
    tell application \"iTerm\"
     activate
     try
      select first window
      set onlywindow to true
     on error
      create window with default profile
      select first window
      set onlywindow to true
     end try
     tell the first window
      if onlywindow is false then
       create tab with default profile
      end if
      tell current session to write text q
     end tell
    end tell
   end run
  " with parameters {q}
 else
  run script "
   on run {q}
    tell application \"iTerm\"
     activate
     try
      select first window
     on error
      create window with default profile
      select first window
     end try
     tell the first window
      tell current session to write text q
     end tell
    end tell
   end run
  " with parameters {q}
 end if
end alfred_script

效果展示

輸入 ls -al 回車會將命令自動在 iTerm2 中執行。

使用工作流程

瞭解基本功能後,重點還是迴歸到 Alfred 的工作流程,官方提供了介面文件方便使用者進行呼叫。\

介面文件:https://www.deanishe.net/alfred-workflow/api/index.html

上圖是 Alfred 的工作流程示意圖,我們通過使用 code 命令根據專案目錄選擇 pycharm 或 vscode 開啟專案資料夾,這一例子來看一下 Alfred 的工作流程。

首先新增一個工作流,指定 Name 為 code。

然後設定專案目錄公共變數。

右鍵新增一個 script filter 指令碼。

如果需要新增指令碼檔案,可以右鍵點選 Open in Finder 開啟該工作流所在目錄,從 GitHub 下載最新版本的 Alfred-Workflow(https://github.com/deanishe/alfred-workflow/releases/latest),解壓並將其中的 workflow 目錄複製到開啟的這個工作流目錄中。

新建 index.py 檔案,程式碼如下:

import sys
import os
from os import listdir
from os.path import isdir, join, expanduser

from workflow import Workflow3, web, ICON_WEB


# 獲取檔案列表
def getFileList():
  args_list = wf.args
  result = []
  for path in args_list[1:]:
    # path = wf.args[1]
    log.debug('path: ' + path)
    path = expanduser(path)
    result.extend([{"file": f, "path": path} for f in listdir(path) if isdir(join(path, f))])
  return result

def main(wf):
  # 獲取搜尋引數
  searchKey = wf.args[0]
  log.debug('searchKey: ' + searchKey)
  # 檔案列表快取 3s
  fileList = wf.cached_data('projects', getFileList, max_age=3)
  # 根據 query 過濾目錄
  for item in fileList:
    if (searchKey and (searchKey in item.get('file'))):
      title = item.get('file')
      wf.add_item(title=title, subtitle=item.get('path'), arg=os.path.join(item.get('path'), title), valid=True)

  # 把應該展示的內容傳送給 Alfred
  wf.send_feedback()

if __name__ == '__main__':
  wf = Workflow3()
  log = wf.logger
  sys.exit(wf.run(main))

回到 Alfred 工作流,新增傳遞引數變數。

新增列表選擇,新增使用者選擇列表。

新增條件判斷,辨別使用者選擇的軟體是哪一個。

然後新增兩個分支 Open File 操作,並使用相應程式開啟檔案。

最後在完成全部設定後開啟 Alfred 彈框,輸入 code + 專案目錄,開始你的 Alfred 使用之旅吧。

推薦閱讀

## Golang 常見設計模式之選項模式

## 《逆局》最終 boss 隱藏自己的方式是?