Ghost Cut:Ghost Cut:重新思考剪切和粘贴工作流程

Ghost Cut:重新思考剪切和粘贴工作流程

传统剪切和粘贴的基本缺陷

现代文字处理器和代码编辑器中的传统剪切和粘贴操作在概念上是碎片化的,导致三个主要的可用性问题:

  1. 不可逆的剪贴板状态:虽然“撤销”命令可以将删除的文本恢复到文档中,但它不会恢复系统剪贴板的先前内容。一旦文本被剪切,除非使用第三方剪贴板管理器,否则先前的剪贴板数据将永久丢失。
  2. 即时文档重排:剪切文本会立即从布局中移除,导致周围文本移动。这通常会迫使用户重新扫描文档以定位预期的粘贴目标,增加不必要的认知负担。
  3. 缺乏原子性:在概念上,移动文本是一个单一的操作,但在技术上它是两个独立的操作(先剪切后粘贴)。撤销粘贴仅会删除插入的文本;需要第二次撤销才能将原始文本返回到其源位置。

引入 Ghost Cut

Ghost Cut 是 Ishmael 编辑器中实现的一种机制,旨在不依赖系统剪贴板的情况下将移动文本视为单一的原子操作。

Ghost Cut 的工作原理

  • 剪切阶段:按下 Ctrl+X(或 Cmd+X)不会删除文本或填充剪贴板。相反,它会将选中的文本“鬼影化”——使其淡化并变得惰性。光标会跳过这个鬼影文本,但文本在其原始位置仍然可见。
  • 粘贴阶段:按下 Ctrl+V(或 Cmd+V)会将鬼影跨度从其源位置移除,并插入到当前光标位置。
  • 取消:如果用户决定不移动文本,按下 Escape 将把鬼影文本恢复到其活动、可编辑状态。

通过在移动操作中绕过剪贴板,Ghost Cut 确保该过程可以通过一次操作完全可逆,并防止意外覆盖现有剪贴板数据。

权衡和语义

由于 Ghost Cut 改变了 Ctrl+X 的行为,传统的“仅剪切不粘贴”(即删除文本并将其存储以供其他地方使用)需要两个步骤:复制文本(Ctrl+C)然后删除它(Backspace)。

社区观点和批评

围绕 Ghost Cut 的技术讨论凸显了一种根本分歧:传统的剪切和粘贴是否实际上是“损坏”的,或者仅仅是一套针对特定工作流程的设计选择。

反对 Ghost Cut 的论点

"剪切可以不用粘贴使用,粘贴可以使用多次。它们是可组合的基本操作。"

其他担忧包括:

  • 肌肉记忆:更改像 Ctrl+X 这样普遍的快捷键的行为可能会让习惯了数十年标准操作系统行为的用户感到沮丧。
  • 可访问性:关于“鬼影”(淡化)文本如何与屏幕阅读器交互存在担忧。如果文本在可访问性树中仍然存在但视觉上被淡化,它可能会让依赖辅助技术的用户感到困惑。
  • 跨应用实用性:传统剪切和粘贴由于系统剪贴板而在不同应用程序之间工作。“鬼影”状态仅局限于单个编辑器,无法用于在不同程序之间移动文本。

替代方案

一些用户建议,现有问题最好通过操作系统级工具而不是应用程序级更改来解决:

  • 剪贴板管理器:像 Ditto 这样的工具提供非破坏性历史记录,使用户能够在不需要新的“剪切”语义的情况下恢复先前的剪贴板状态。
  • 拖放:许多编辑器(VS Code、Google Docs)已经通过鼠标驱动的拖放实现了“移动”操作,这能够达到与 Ghost Cut 相同的原子结果。
  • 专用编辑器功能:某些旧版编辑器(例如某些 Emacs 配置)具有“交换”操作,允许用户瞬间交换两个选中单词的位置。

Sources