CopyQ
CopyQ 是一款开源的、跨平台剪贴板管理工具,支持 Windows、macOS、Linux,可以帮你管理保存在剪贴板中的多个文本、图像、HTML 等格式内容,并在需要的时候快速检索,支持全局快捷键、自定义外观、标签、多标签页(分类)、编辑等功能,还支持自动运行命令,比如检测到网页链接则自动添加标签等高级功能。
强大的自定义功能是 CopyQ 区别其他常见剪贴板增加工具的,CopyQ 拥有强大的命令行和脚本接口、可以创建命令,类似具备脚本编辑的软件有收费软件 ClipboardFusion。
CopyQ 可通过菜单、快捷键或剪贴板内容更改时执行的自定义操作:
创建命令的方法:
- 打开命令对话框(F6快捷键),
- 点击“添加”按钮,选择预定义命令或创建新命令。
- (可选)更改命令详细信息(快捷方式、名称),
- 单击“确定”保存命令。
命令的保存和分享
你可以导入导出备份文件的方式,也可以使用粘贴命令的方式导入其他人分享的命令。
你可能会遇到类似这样的代码:
[Command]
Name=Show/hide main window
Command=copyq: toggle()
Icon=\xf022
GlobalShortcut=ctrl+shift+1
这段代码表示 CopyQ 中可以使用的一个命令(具体来说,它会在按下 Ctrl+Shift+1 时打开主窗口)。要在 CopyQ 中使用此命令:
- 复制以上代码。
- 打开“命令”对话框(
F6快捷键)。 - 点击对话框底部的“粘贴命令”按钮。
- 点击“确定”按钮。
(现在你应该可以使用 Ctrl+Shift+1 打开主窗口了。)
要共享您的命令,您可以从“命令”对话框的命令列表中选择命令,然后按“复制选择项”按钮(或直接按 Ctrl+C)。
访问开源共享的命令示例
查看如何编写命令的帮助文档
我分享一下自用的 CopyQ 脚本命令,也欢迎大家补充分享自己的脚本命令:
将换行符转为一行,尤其适合将复制的多行标题文字设为文件名时
[Command]
Name=多行粘贴为一行
Command="
copyq:
var text = str(clipboard());
// 使用正则表达式替换所有类型的换行符为一个空格
var cleaned = text.replace(/\\r\\n|\\r|\\n/g, ' ');
//setData('text/plain',cleaned)
copy(cleaned)
copySelection(cleaned)
paste()"
IsGlobalShortcut=true
Icon=
GlobalShortcut=ctrl+shift+r
将带格式内容粘贴为纯文本,尤其粘贴到Word和WPS时去掉格式
[Command]
Name=剪贴板粘贴为纯文本
Command="
copyq:
var text = clipboard()
copy(text)
copySelection(text)
paste()"
IsGlobalShortcut=true
Icon=
GlobalShortcut=ctrl+shift+t
自己找一个单击.wav文件,放到CopyQ所在文件夹即可
[Command]
Name=复制时发声
Command="
powershell:
(New-Object Media.SoundPlayer \"单击.wav\").PlaySync()
"
Automatic=true
Icon=
多个剪贴项合并为一个剪贴项,可根据需要修改代码
[Command]
Name=合并条目
Command="
copyq:
const separator = '\\n'; //合并项目用换行分开
//const separator = ' '; //合并项目用空格分开
var sel = new ItemSelection().current();
const texts = sel.itemsFormat(mimeText);
sel.selectAll();
add(texts.join(separator));
sel.invert();
selectItems(sel.rows()[0]);"
InMenu=true
Icon=
Shortcut=ctrl+j
复制的项目带窗口标题的Tag标记,用来区分复制来源
[Command]
Name=显示窗口标题
Command="
copyq:
var window = str(data('application/x-copyq-owner-window-title'))
var tagsMime = 'application/x-copyq-tags'
var tags = str(data(tagsMime)) + ', ' + window
setData(tagsMime, tags)"
Automatic=true
Icon=
复制的项目带复制时间的Tag标记,用来区分什么时候复制的
[Command]
Name=显示复制时间
Command="
copyq:
var time = dateString('yyyy-MM-dd hh:mm:ss')
setData('application/x-copyq-user-copy-time', time)
var tagsMime = 'application/x-copyq-tags'
var tags = str(data(tagsMime)) + ', ' + time
setData(tagsMime, tags)"
Automatic=true
Icon=