# CopyQ 命令分享

**URL:** <https://meta.appinn.net/t/topic/77091>\
**Category:** 讨论分享\
**Tags:** copyq\
**Created:** [2025 年11 月 10 日 03:24 UTC](https://meta.appinn.net/t/topic/77091 "2025-11-10T03:24:16Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

作者： ![xiaokonglong](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/xiaokonglong/32/908_2.png) [@xiaokonglong](https://meta.appinn.net/u/xiaokonglong)\
发布日期： [2025 年11 月 10 日 03:24 UTC](https://meta.appinn.net/t/topic/77091/1 "2025-11-10T03:24:16Z")

</div>

# [CopyQ](https://www.appinn.com/copyq/)

**CopyQ** 是一款开源的、跨平台剪贴板管理工具，支持 Windows、macOS、Linux，可以帮你管理保存在剪贴板中的多个文本、图像、HTML 等格式内容，并在需要的时候快速检索，支持全局快捷键、自定义外观、标签、多标签页（分类）、编辑等功能，还支持自动运行命令，比如检测到网页链接则自动添加标签等高级功能。

强大的自定义功能是 CopyQ 区别其他常见剪贴板增加工具的，CopyQ 拥有强大的命令行和脚本接口、可以创建`命令`，类似具备脚本编辑的软件有收费软件 **ClipboardFusion** 。

CopyQ 可通过菜单、快捷键或剪贴板内容更改时执行的自定义操作：

### 创建`命令`的方法：

1. 打开命令对话框（F6快捷键），
2. 点击“添加”按钮，选择预定义命令或创建新命令。
3. （可选）更改命令详细信息（快捷方式、名称），
4. 单击“确定”保存命令。

### 命令的保存和分享

你可以导入导出备份文件的方式，也可以使用`粘贴命令`的方式导入其他人分享的命令。

你可能会遇到类似这样的代码：

```auto
[Command]
Name=Show/hide main window
Command=copyq: toggle()
Icon=\xf022
GlobalShortcut=ctrl+shift+1

```

这段代码表示 CopyQ 中可以使用的一个命令（具体来说，它会在按下 Ctrl+Shift+1 时打开主窗口）。要在 CopyQ 中使用此命令：

1. 复制以上代码。
2. 打开“命令”对话框（`F6` 快捷键）。
3. 点击对话框底部的“粘贴命令”按钮。
4. 点击“确定”按钮。

（现在你应该可以使用 Ctrl+Shift+1 打开主窗口了。）

要共享您的命令，您可以从“命令”对话框的命令列表中选择命令，然后按“复制选择项”按钮（或直接按 Ctrl+C）。

访问[开源共享的命令示例](https://github.com/hluk/copyq-commands)  
查看[如何编写命令的帮助文档](https://copyq.readthedocs.io/en/latest/writing-commands-and-adding-functionality.html)

* * *

### 我分享一下自用的 CopyQ 脚本命令，也欢迎大家补充分享自己的脚本命令：

将换行符转为一行，尤其适合将复制的多行标题文字设为文件名时

```auto
[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时去掉格式

```auto
[Command]
Name=剪贴板粘贴为纯文本
Command="
    copyq: 
    var text = clipboard()
    copy(text)
    copySelection(text)
    paste()"
IsGlobalShortcut=true
Icon=
GlobalShortcut=ctrl+shift+t

```

自己找一个`单击.wav`文件，放到CopyQ所在文件夹即可

```auto
[Command]
Name=复制时发声
Command="
     powershell:
     (New-Object Media.SoundPlayer \"单击.wav\").PlaySync()
    "
Automatic=true
Icon=

```

多个剪贴项合并为一个剪贴项，可根据需要修改代码

```auto
[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标记，用来区分复制来源

```auto
[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标记，用来区分什么时候复制的

```auto
[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=

```

---

<div class="post-metadata">

作者： ![Faith\_Mian](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/f/97f17d/32.png) [@Faith\_Mian](https://meta.appinn.net/u/Faith_Mian)\
发布日期： [2025 年11 月 10 日 03:53 UTC](https://meta.appinn.net/t/topic/77091/2 "2025-11-10T03:53:44Z")

</div>

张小龙什么货色？龙哥我只认小恐龙

* * *

# 成品1，来自小众软件论坛

```auto
[Command]
Name=ctrl+1-9粘贴最近n项
Command="
    copyq:
    var n = str(data(mimeShortcut)).slice(-1)
    select(parseInt(n)-1)
    paste()"
IsGlobalShortcut=true
HideWindow=true
Icon=
GlobalShortcut=ctrl+1, ctrl+2, ctrl+3, ctrl+4, ctrl+5, ctrl+6, ctrl+7, ctrl+8, ctrl+9

```

# 成品2，来自作者回复issue

```auto
[Command]
Name=official-Trim Whitespace
Command="
    copyq:
    if ( dataFormats().indexOf(mimeUriList) != -1 )
        abort()

    var text = str(input())
    var newText = text.trim()
    if (newText != text) {
        copy(newText)
        paste()
    }"
Input=text/plain
InMenu=true
Icon=

```

# 成品3，来自作者回复issue

```auto
[Command]
Name=official-html Trim Whitespace
Command="
    copyq:
    if ( dataFormats().indexOf(mimeUriList) != -1 )
        abort()

    var text = str(input())
    var newText = text.trim()
    if (newText != text) {
        copy(newText)
        setData(mimeText, newText)
        removeData(mimeHtml)
        paste()
    }"
InMenu=true
Icon=

```

# 模板1，来自作者回复issue

```auto
[Command]
Name=official-Template: Modify Selected Text
Command="
    copyq:
    function modifyText(text)
    {
        // TODO: Modify text here!
        return text.replace(/\\n/g, ';')
    }

    copy()

    var text = str(clipboard())
    var newText = modifyText(text)
    if (text == newText)
        abort()

    copy(newText)
    paste()
    "
InMenu=true
Enable=false
Icon=
Shortcut=ctrl+shift+s
GlobalShortcut=ctrl+shift+s

```

# 模板2，来自作者回复issue

```auto
[Command]
Name=official-Template: Replace in Selection
Command="
    copyq:
    copy();
    const text = str(clipboard());
    if (text) {
      const r1 = 'Text';
      const r2 = 'Replace with';
      const reply = dialog(r1, '', r2, '');
      if (reply) {
        copy(text.replace(new RegExp(reply[r1], 'g'), reply[r2]));
        paste();
      }
    }"
IsGlobalShortcut=true
Enable=false
Icon=
GlobalShortcut=ctrl+alt+r

```

---

<div class="post-metadata">

作者： ![adoin](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/adoin/32/30394_2.png) [@adoin](https://meta.appinn.net/u/adoin)\
发布日期： [2025 年11 月 10 日 05:26 UTC](https://meta.appinn.net/t/topic/77091/3 "2025-11-10T05:26:17Z")

</div>

这些实用吗。。。  
我是很早就copyQ转EcoPaste了

---

<div class="post-metadata">

作者： ![xiaokonglong](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/xiaokonglong/32/908_2.png) [@xiaokonglong](https://meta.appinn.net/u/xiaokonglong)\
发布日期： [2025 年11 月 10 日 06:16 UTC](https://meta.appinn.net/t/topic/77091/4 "2025-11-10T06:16:46Z")

</div>

> [@adoin](#):
>
> 这些实用吗。。。

实用要看你自己的需求， 比如当你想把html转为md的时候， 你就可以自己写个脚本，而这些，通常其他剪贴板软件是肯定无法实现的。

---

<div class="post-metadata">

作者： ![adoin](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/adoin/32/30394_2.png) [@adoin](https://meta.appinn.net/u/adoin)\
发布日期： [2025 年11 月 10 日 06:20 UTC](https://meta.appinn.net/t/topic/77091/5 "2025-11-10T06:20:33Z")

</div>

我会让AI写啊。。。还花时间写脚本吗

---

<div class="post-metadata">

作者： ![xiaokonglong](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/xiaokonglong/32/908_2.png) [@xiaokonglong](https://meta.appinn.net/u/xiaokonglong)\
发布日期： [2025 年11 月 10 日 06:30 UTC](https://meta.appinn.net/t/topic/77091/6 "2025-11-10T06:30:35Z")

</div>

> [@adoin](#):
>
> 我会让AI写啊。。。

当然可以啊， 你也可以让AI写脚本啊。

另外 # EcoPaste 并不支持，而且我测试过 ， 它需要WebView2，占用有点高。

---

<div class="post-metadata">

作者： ![Azona77](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/azona77/32/63797_2.png) [@Azona77](https://meta.appinn.net/u/Azona77)\
发布日期： [2025 年11 月 10 日 08:24 UTC](https://meta.appinn.net/t/topic/77091/7 "2025-11-10T08:24:52Z")

</div>

我也用CopyQ好久了，单纯是因为占用少，完全没用过CopyQ脚本，这种脚本应该很看场景，比较适合特殊场景的高频需求

感觉低频需求用文本编辑器里的功能就好了，通用的高频需求我也基本整理成了AHK脚本，不过感觉后两个打tag的脚本倒是蛮有用的

---

<div class="post-metadata">

作者： ![leeyaunlong](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/l/f19dbf/32.png) [@leeyaunlong](https://meta.appinn.net/u/leeyaunlong)\
发布日期： [2025 年11 月 10 日 08:45 UTC](https://meta.appinn.net/t/topic/77091/8 "2025-11-10T08:45:06Z")

</div>

ecopaste有啥好处?

官网连个界面截图都没有, 我点下载吧, 没有下载链接….

最后github看了一眼, 太普通了…. 也不用装了.

---

<div class="post-metadata">

作者： ![adoin](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/adoin/32/30394_2.png) [@adoin](https://meta.appinn.net/u/adoin)\
发布日期： [2025 年11 月 10 日 09:54 UTC](https://meta.appinn.net/t/topic/77091/9 "2025-11-10T09:54:39Z")

</div>

粘贴板 很多格式的带 预览，文本带原来格式，方便记得哪复制的，搜索 收藏 置顶这些太基础的自然也有

---

<div class="post-metadata">

作者： ![xiaokonglong](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/xiaokonglong/32/908_2.png) [@xiaokonglong](https://meta.appinn.net/u/xiaokonglong)\
发布日期： [2025 年11 月 10 日 09:59 UTC](https://meta.appinn.net/t/topic/77091/10 "2025-11-10T09:59:48Z")

</div>

它跟copyq比的优势在哪儿? 颜值吗

---

<div class="post-metadata">

作者： ![showyoubetter](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/s/41988e/32.png) [@showyoubetter](https://meta.appinn.net/u/showyoubetter)\
发布日期： [2025 年11 月 10 日 17:07 UTC](https://meta.appinn.net/t/topic/77091/11 "2025-11-10T17:07:05Z")

</div>

我也放两个

```auto
[Command]
Name=拆分选项
Command="
    copyq:
    var items = {
        \",\": \",\",
        \"换行\": \"\\n\",
        \"空格\": \" \",
        \"tab\": \"\\t\"
    }
    var sp_name = dialog('.defaultChoice', '', 'Select', Object.keys(items))
    var sp = items[sp_name];
    if (sp == null) {
        sp = sp_name
    }
    popup(sp)
    var data = str(data(mimeText)).split(sp);
    if (data.length > 1) {
        for (var i = 0; i < data.length; ++i) {
            add(data[i].trim());
        }
    }
    "
InMenu=true
Icon=

```

```auto
[Command]
Name=合并选择项
Command="
    copyq:
    var items ={
        \",\": \",\",
        \"换行\": \"\\n\",
        \"回车\": \"\\r\",
        \"空格\": \" \",
        \"tab\": \"\\t\"
    }
    var sp_name = dialog('.defaultChoice', '', 'Select', Object.keys(items))
    serverLog(\"sp_name:\" + sp_name)
    var separator = items[sp_name];
    serverLog(separator)
    if(!separator){
    separator = sp_name
    }
    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=space

```

---

<div class="post-metadata">

作者： ![adoin](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/adoin/32/30394_2.png) [@adoin](https://meta.appinn.net/u/adoin)\
发布日期： [2025 年11 月 11 日 01:58 UTC](https://meta.appinn.net/t/topic/77091/12 "2025-11-11T01:58:57Z")

</div>

> [@xiaokonglong](#):
>
> 跟copyq比的优势在哪儿

嗯 这个可能更多是copyQ不好看 不是ecoPaste多好看 ant 也就那样

---

<div class="post-metadata">

作者： ![XGF](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/x/9e8a1a/32.png) [@XGF](https://meta.appinn.net/u/XGF)\
发布日期： [2025 年11 月 11 日 02:40 UTC](https://meta.appinn.net/t/topic/77091/13 "2025-11-11T02:40:13Z")

</div>

我也来凑个热闹 :grin: ：[GFDGIT/CopyQ\_lazy: 个人的CopyQ仓库，包括命令和配置。](https://github.com/GFDGIT/CopyQ_lazy)

---

<div class="post-metadata">

作者： ![leeyaunlong](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/l/f19dbf/32.png) [@leeyaunlong](https://meta.appinn.net/u/leeyaunlong)\
发布日期： [2025 年11 月 11 日 06:17 UTC](https://meta.appinn.net/t/topic/77091/14 "2025-11-11T06:17:00Z")

</div>

那window下 clipcache是最好的. 支持粘贴输出的时候使用 特定应用的特定快捷键输出, 比如有些term只支持(alt+enter)粘贴.

所有clip都是挂在树上的, 还可以自己建分类树, 你说的预览是默认的.

使用sqlite数据库存储, 二次调用也很方便.

---

<div class="post-metadata">

作者： ![leeyaunlong](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/l/f19dbf/32.png) [@leeyaunlong](https://meta.appinn.net/u/leeyaunlong)\
发布日期： [2025 年11 月 11 日 06:18 UTC](https://meta.appinn.net/t/topic/77091/15 "2025-11-11T06:18:49Z")

</div>

copyq 就有两个缺陷

1 同步比较麻烦 , ditto 局域网内可以实时. 还可以复制文件

2 有部分太大的对象复制,有少数情况程序会崩. ditto几乎没崩过.

---

<div class="post-metadata">

作者： ![kat](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/kat/32/58750_2.png) [@kat](https://meta.appinn.net/u/kat)\
发布日期： [2025 年11 月 12 日 04:03 UTC](https://meta.appinn.net/t/topic/77091/16 "2025-11-12T04:03:52Z")

</div>

别闹了。

EcoPaste 碰瓷不了 CopyQ。

功能深度和强大性不在一个层面上。

搁着讨论UI，审美这东西见仁见智，但我不觉得它比 CopyQ 好看。讲真，用这种 Web 风设计，做成这样不叫简约，叫简陋。

性能。内存占用被 CopyQ 秒。

so，自己享受就好

---

<div class="post-metadata">

作者： ![allor](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/allor/32/1268_2.png) [@allor](https://meta.appinn.net/u/allor)\
发布日期： [2025 年11 月 12 日 17:24 UTC](https://meta.appinn.net/t/topic/77091/17 "2025-11-12T17:24:44Z")

</div>

从一段文字中提取百度网盘分享链接并拼接提取码  
必须连同提取码一起复制，不然会出错  
仅修改当前剪贴板，不修改 CopyQ 内的条目

```auto
[Command]
Name=百度云链接
Match=(https?:\\/\\/pan\\.baidu\\.com\\/s\\/[\\w\\-]+)
Command="
    copyq:
    var text = str(clipboard());
    var singlelinetext = text.replace(/\\r\\n|\\r|\\n/g, '')
    var exp = /(.*)(https?:\\/\\/pan\\.baidu\\.com\\/s\\/[\\w\\-]+)(.*)(\\w{4})(.*)/g;
    var link = singlelinetext.replace(exp,\"$2?pwd=$4\");
    copy(link);
    "
Input=text/plain
Automatic=true
Icon=

```

---

<div class="post-metadata">

作者： ![Faith\_Mian](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/f/97f17d/32.png) [@Faith\_Mian](https://meta.appinn.net/u/Faith_Mian)\
发布日期： [2025 年11 月 16 日 07:20 UTC](https://meta.appinn.net/t/topic/77091/18 "2025-11-16T07:20:25Z")

</div>

亲测无感且好用

---

<div class="post-metadata">

作者： ![Faith\_Mian](https://meta-edge.appinn.com/letter_avatar_proxy/v4/letter/f/97f17d/32.png) [@Faith\_Mian](https://meta.appinn.net/u/Faith_Mian)\
发布日期： [2025 年11 月 16 日 07:36 UTC](https://meta.appinn.net/t/topic/77091/20 "2025-11-16T07:36:33Z")

</div>

多行粘贴为一行这个脚本，看起来只能在全局直接使用；不知道如何修改才能在呼出菜单针对选中的条目使用它？

---

<div class="post-metadata">

作者： ![Eliauk](https://meta-edge.appinn.com/user_avatar/meta.appinn.net/eliauk/32/9713_2.png) [@Eliauk](https://meta.appinn.net/u/Eliauk)\
发布日期： [2025 年11 月 16 日 14:59 UTC](https://meta.appinn.net/t/topic/77091/21 "2025-11-16T14:59:52Z")

</div>

官方有个仓库，里面有很多命令：[copyq-commands](https://github.com/hluk/copyq-commands)
