[Mac] 用 Keyboard Maestro 自動取代剪貼簿中的內容

[Mac] 用 Keyboard Maestro 自動取代剪貼簿中的內容

在寫網誌時,常常會需要在文章裡,引用網誌裡的其他篇文章,

這時候我都會用網誌的搜尋功能,

找到要的文章後,複製連結,再貼到新文章上。

 

因此,複製起來的連結通常是像 https://ephrain.net/xxx 這樣,

但我通常會手動去掉 https://ephrain.net 的部分,只留下 /xxx 這樣的路徑,

這樣就算以後再搬到其他的站台上,也不用再修改連結。

但是,有沒有辦法在我複製連結的時候,

就自動把 https://ephrain.net 從系統的剪貼簿中去掉呢?

 

答案是有的,就是使用強大的 Keyboard Maestro~

之前已經用它完成了不少工作,像是:

 

今天,我們就來用 Keyboard Maestro 幫我達成我想要的自動化吧~

 

1. 新增一個巨集

在 Keyboard Maestro > File > New Macro,開始一個新的巨集。

 

2. 設定觸發條件

觸發條件可以有不同的寫法,

我現在用的是比較簡單直覺的,就是如果有人複製了文字到剪貼簿,

就會觸發這個巨集,然後巨集的動作裡面再去檢查是否要替換文字。

 

因此,在 Trigger 的地方,設定成 The system clipboard changes:

 

3. 設定巨集的動作

有人複製資料到剪貼簿就會觸發巨集,

但我們還要多檢查一些東西,不然我隨便複製一段文字,

只要裡面有 https://ephrain.net 的話就被換掉,好像也不太好…

 

因此,我們先加一個 If-else 的條件判斷式,

而且這 If 裡面需要有兩個條件同時滿足。

第一個條件是確定目前是在 Chrome 裡做複製的,

因此檢查一下 Chrome 是不是在前景:

 

第二個條件是想要確認 Chrome 裡面,

的確有開一個 WordPress 正在編輯文章的分頁。

這個有點麻煩,用 Chrome 的擴充功能是可以很容易知道開了哪些分頁,

但在 Chrome 外面的話,只能用難寫的 AppleScript 來取得資料…

 

研究了一下,可以用下面的 AppleScript 程式,

取得 Chrome 所有分頁的標題名稱:

tell application "Google Chrome" to get count of tab of window 1
set tabCount to the result
set allTitles to ""

repeat with i from 1 to tabCount
	tell application "Google Chrome" to get title of tab i of window 1
	set allTitles to allTitles & the result
end repeat

 

上面的程式會先取得 Chrome 中分頁的數量,

再取得每個分頁的網頁標題,最後將所有的標題串接起來。

注意這個程式只處理 Chrome 的第一個視窗裡的所有分頁,

如果開了多個 Chrome 視窗 (非分頁) 的話,就會漏掉,

但我平常是開分頁,不太會開多個 Chrome 視窗,所以先不考慮這個狀況。

 

有了這個 AppleScript 程式後,我們就可以加入 If 的第二個條件,

就是 AppleScript 執行完的結果,必須包含 WordPress 編輯中的標題。

像我在編輯文章時,

網頁標題會是 “EPHRAIN 亂打一通的心情日記 — WordPress”:

 

如果上述兩個條件都滿足的話,

代表現在我正在 Chrome 上複製了一串文字,

而且也有個分頁是在編輯 WordPress 網誌文章,

那我就假設我複製的資料裡,如果有網誌文章的網址的話,

是想要貼到編輯中的文章裡的 (有點繞口)…

 

因此,在 If 條件滿足時,會做 Search and Replace Clipboard 的動作,

將 https://ephrain.net/ 取代成 /,

所以如果我複製了一個網誌文章的網址,

原本是 https://blog.ephrain.net/mac-install,就會被換成 /mac-install:

 

這樣這個巨集就設定完成了~

實際測試一下,確實只要在 Chrome 裡複製的網誌連結,都會被修改;

若是在 Chrome 以外的程式 (像 Sublime Text) 裡複製的話,就不會有影響了~

 

這個巨集本身不算複雜,只是 AppleScript 真的很難懂/難搞而已…

用 Keyboard Maestro 完成的事又多了一項囉~^^

 

參考資料:

Get URL of opened tab / tabs from terminal

AppleScript: Looping and Variables

AppleScript string tip: How to concatenate strings

Applescript – how do I use the result of a library return value

(本頁面已被瀏覽過 159 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料