C6.15.2Overwrite clipboard loses content设计研究
覆盖式剪贴板导致内容丢失
别名: 剪贴板覆盖 · 剪贴板历史 · 单槽缓冲
概念解释
默认剪贴板只有一个槽位:下一次复制把上一次的对象整体换掉,被换掉的内容没有文档级的撤销可找回。用户为两处粘贴准备了两段文字时,第二段复制会让第一段从全局缓冲里消失。丢失不是删除键造成的,是单槽覆盖的结构。
机制
单槽语义把“当前剪贴板”等同于“最近一次复制”。工作记忆可以同时盯几段要转移的文本,机器只能盯一段。中间任何一次复制——包括系统自动写入、格式刷、或误触——都会提交一次覆盖。被覆盖的对象若不在源文档里了(剪切而不是复制、源已关闭、源是临时消息),就没有第二份。剪贴板历史把单槽改成栈或列表:新写入压在上面,旧对象仍可被挑出来粘贴。历史不是“多一个复制命令”,而是承认覆盖会丢东西,所以把槽位做成可回看的。没有历史时,唯一的防丢策略是粘贴后再去拷下一段,把任务拆成严格的拷—贴—拷—贴,这与人“先收集再分发”的策略冲突。
怎么研究
给需要转移 n 段内容的任务,只提供单槽或提供带历史的缓冲,记录丢失次数、重找源的时间和用户是否改成严格交替。自变量包括 n、源是否还在、历史条目是否可见。因变量包括覆盖丢失、主动打开历史的次数。n=1 的任务测不出这条。
边界
“复制到专用目标”(分享表、拖拽、寄到某个字段)不走全局单槽,覆盖问题不在这条上。协作文档的版本历史能找回源,不能找回剪贴板里那份已覆盖的对象。历史本身有长度上限和隐私代价,不是无限栈。
怎么落地
- 为多次转移提供剪贴板历史或钉住槽位,默认仍可用单槽粘贴最近一项。
- 剪切操作在覆盖发生前,若历史不可用,应比复制更谨慎地确认或把源留在废纸篓式缓冲里。
- 用“收集三段再分别贴到三处”做验收;单槽下若必须改成交替拷贴才能成功,就说明覆盖在破坏任务策略。