Ghost Cut —— 为什么剪切与粘贴机制在各处都存在缺陷

Ghost Cut —— 为什么剪切与粘贴机制在各处都存在缺陷

Hacker News 摘要

原标题:Ghost Cut – or why Cut and Paste is broken everywhere

文章指出,无论是文字处理软件、代码编辑器还是浏览器的文本区域,现有的剪切与粘贴机制在过去几十年里一直存在缺陷。剪切与粘贴本质上是两个操作的结合:剪切用于移除文字并存入剪贴板,粘贴用于在文档新位置插入文字。作者列举了这种机制的三大弊端:

传统剪切与粘贴的缺陷

1. 剪切操作无法完全撤销

剪切操作的第一大缺陷是它无法被完全撤销。虽然使用撤销快捷键 control+zcommand+z 可以让被剪切的文字回到文档原位,但剪贴板的内容却无法恢复。如果你在剪切时覆盖了剪贴板里原有的重要信息,那些信息就彻底消失了。即使使用剪贴板管理器,撤销操作也无法干净地还原这一按键造成的所有改变。

2. 剪切会导致文档重排

剪切操作通常是为了移动文字。然而当你按下剪切键的一瞬间,文字消失会导致文档布局立即发生重排。这迫使你必须在变动后的文档中重新寻找想要粘贴的目标位置,增加了不必要的认知负担。

3. 非原子化操作

虽然剪切和粘贴在逻辑上是将文字从一处移到另一处的单一行为,但在操作上它并不是原子化的。撤销一次粘贴只能移除新插入的文字,你必须进行第二次撤销才能找回最初剪切掉的文字。如果在剪切和粘贴之间进行了其他编辑操作(例如新建段落),撤销过程会变得更加麻烦。

Ghost Cut 机制介绍

作者在名为 Ishmael 的写作应用中引入了 Ghost Cut(幽灵剪切)机制。该功能不需要用户改变肌肉记忆,只需沿用习惯即可解决上述缺陷:

操作流程:按下 ctrl+x 后,选中的文字会变淡并进入非活跃状态。这些文字依然留在文档原位,但你无法点击它们,光标也会直接跳过。此时,系统并不会将文字放入剪贴板,也没有产生任何撤销记录。

取消与执行:如果你决定不粘贴了,只需按下 escape 键,文字就会恢复到正常的活跃编辑状态。当你按下粘贴键 control-vcommand-v 时,处于幽灵状态的文字会从原位置消失,并直接移动到光标所在的新位置。

主要优势:这使移动操作变成了单一的原子化操作。它完全可逆,可以一键撤销,且不会污染你的剪贴板。

相关对比与结论

这种设计并非没有先例。例如微软 Excel 在剪切单元格时会使单元格边框变虚且内容变淡,但在文本编辑器领域,这种做法几乎未见。

Ghost Cut 虽然改变了剪切的原始定义,但影响极小。如果你确实只想把文字存入剪贴板并删除原文,只需要先复制 control-c 再按退格键删除即可。作者认为,剪切而不粘贴的情况极少发生,因此这种改动利大于弊。

作者希望各类文本编辑器都能采纳这一机制。尽管代码编辑器对文档重排的问题没那么敏感,但作者表示,如果 VSCode 等工具支持 Ghost Cut,他也会非常乐意开启该功能。


原文:https://ishmael.textualize.io/blog/ghost-cut/

评论:https://news.ycombinator.com/item?id=49007626

Report Page