我的剪貼簿管理工具主力是Ditto,Ditto輕量簡便,但並無自訂功能,最近重新安裝了CopyQ,並嘗試做了一些設定與自訂命令,讓剪貼簿操作能依需求處理,從而增進執行效率。本文介紹幾個我的自訂功能,希望能帶給各位一些剪貼簿應用上的啟發。
CopyQ是使用QT撰寫的軟體,因此能在Windows、macOS與Linux上執行,並開源於GitHub。
CopyQ的複製內容會逐次存入稱為「History」的區域,按一次Ctrl+C就會存入History的Clipboard分頁,點擊History區的任一項目,項目內容會存入系統剪貼簿,並複製到作用中的應用程式內。
1. 我的剪貼簿增強
1.1. 內容備份
我的第一類增強是備份特定內容到添加的分頁。
這個需求是方便找到需要的資料。雖然在預設的Clipboard分頁可以按Ctrl+F搜尋找到需要的資料,但若能自動分類就能更迅速的尋獲要再次使用的內容。
- 當複製的是圖片時,自動複製到 Images 分頁
- 當複製的是網址時(內容有
http://或https://),自動複製到 URL 分頁 - 當複製內容以
字母:\自動複製到 Folders 分頁
1.2. 直接複製特定項目
第二類增強是直接取用第 n 個複製項目內容:
- 按Alt+1複製第1個項目
- 按Alt+2複製第2個項目
- Alt+3按鍵複製第3個項目
- Alt+V按鍵由選定項目連續複製
2. 新增自訂命令步驟
開啟CopyQ主視窗後,按F6或點擊功能表【File】→【Commands...】即能維護自訂命令。
2.1. 操作簡介
- 點擊〔Add〕→選用【New command】。可選用其他預設選項。
- 在左側【Name:】 指定命令名稱
- 若勾選右下側的【Show Advanced】會顯示【Advanced】分頁,可做額外設定
- 在Command分頁裡輸入腳本內容,一般以「copyq:」開頭,表示使用CopyQ的腳本語法,也可用「phthon:」等使用Python語法,或「powershell:」等腳本語法
- 可複選的命令類型(Type),皆為選用與不選用兩種切換狀態:
- Automatic: 按了Ctrl+C後是否自動執行
- In Menu: 是否顯示在項目的右鍵功能表
- Global shortcut: 是否設定全域熱鍵
- Display: 是否顯示前先變更剪貼簿內容
Automatic與Gobal shortcut通常不會同時勾選
2.2. 添加History區分頁
點選功能表【Tabs】→【New Tab】以添加新的分頁,如 Images、URL與Folders分頁。
可使用 popup(標題, 內容) 除錯,內容會以通知形式顯示在右下角
3. 備份範例
3.1. 存放圖片
- 當剪貼簿格式是image/png時,複製到 Images 分頁
另一個使用腳本的方法:
copyq:
var currentFormats = dataFormats();
// 判斷陣列中是否包含圖片格式
if (currentFormats.indexOf("image/png") !== -1 ||
currentFormats.indexOf("image/jpeg") !== -1 ||
currentFormats.indexOf("image/gif") !== -1) {
//popup("複製內容", "剪貼簿包含圖片。");
//tab('Images');
setData(mimeOutputTab, "Images")
}
3.2. 備份網址
- 勾選【Automatic】
- 只複製第一個網址
- Add command 也有Copy web URL的選項可使用
copyq:
// 讀取剪貼簿的純文字內容
var text = str(clipboard());
//popup('popup', text);
// 檢查文字是否以 http: 或 https: 開頭
var _iIndex = -1;
var _iIndex1 = text.indexOf('http://');
var _iIndex2 = text.indexOf('https://');
if (_iIndex1 >= 0) {
text = text.substring(_iIndex1);
_iIndex = text.indexOf(')', _iIndex1+1);
if (_iIndex > 0) {
text = text.substring(0, _iIndex);
}
_iIndex = _iIndex1;
}
if (_iIndex2 >= 0) {
text = text.substring(_iIndex2);
_iIndex = text.indexOf(')', _iIndex1+1);
if (_iIndex > 0) {
text = text.substring(0, _iIndex);
}
_iIndex = _iIndex2;
}
if (_iIndex >= 0) {
tab('URL');
add(text);
}
3.3. 備份資料夾
- 勾選【Automatic】
copyq:
// 讀取剪貼簿的純文字內容
var text = str(clipboard());
var drive = text.toUpperCase()
drive = drive.substr(0,2);
colon = text.substr(1,2);
//popup('popup', text+"/ " + drive + '/' + colon);
if (colon == ':' && drive >= 'C:' && drive <= 'Z:') {
//popup('popup', text);
tab('Folders');
add(text);
}
4. 直接複製範例
4.1. 複製第1項
- 選用Global shortcut,並設定熱鍵Alt+1
- 項目編號由 0 開始,select(0)是第一項
copyq:
// 複製第一項項目
select(0);
paste();
4.2. 複製第2項
- 選用Global shortcut,並設定熱鍵Alt+2
- 以此類推...
copyq:
// 複製第2項項目
select(1);
paste();
4.3. 連續貼上
- 選用Global shortcut,並設定熱鍵Alt+V
- 開啟主視窗並點擊開始項目,回到作用中的應用程式後需要剪貼內容就按Alt+V
copyq:
// 在主視窗點擊要複製的項目
var _iItem = currentItem();
popup("msg", str(_iItem));
select(_iItem);
paste();
next();
5. 💡 相關鏈接
✅ 解說文章(繁體中文): https://jdev.tw/blog/8881/
✅ Explanation article(English)
✅ GitHub CopyQ: Clipboard manager with advanced features
##