文章摘要
本文指出,所有文字处理器、代码编辑器和浏览器文本框中的“剪切与粘贴”功能都存在三大缺陷:剪切无法完全撤销、剪切后文档重新排版导致粘贴位置丢失、以及剪切与粘贴操作不具原子性。
文章总结
文章标题:介绍“幽灵剪切”——为何剪切与粘贴功能普遍存在缺陷
核心内容:作者指出,在所有文字处理器、代码编辑器和浏览器文本区域中,剪切与粘贴功能都存在三个根本性缺陷,且这些问题已持续数十年。首先,剪切操作无法完全撤销——撤销仅恢复文档中的文本,但剪贴板内容已永久丢失。其次,剪切会导致文档重新排版,迫使使用者重新定位粘贴位置,增加不必要的认知负担。最后,剪切与粘贴并非原子操作,无法作为单一步骤撤销;若中间存在编辑,需多次撤销才能完全恢复原状。
作者在Ishmael编辑器中引入了“幽灵剪切”机制来解决这些问题:按下Ctrl+X后,选中文本会变淡并变为不可交互状态,但仍在文档中保留,不涉及剪贴板操作,也无需撤销。若放弃粘贴,按Esc即可恢复文本。粘贴时(Ctrl+V),文本会从原位置移除并插入光标处,形成一次完整的原子移动操作,可一键撤销且不污染剪贴板。该功能在Excel等应用中有类似先例,但在文本编辑器中尚属首创。
副作用方面,若需传统剪切功能(复制到剪贴板并删除原文),需先按Ctrl+C复制,再按Backspace删除。作者认为,由于极少单独使用剪切而不粘贴,这一改变利大于弊。最后,作者希望各类文本编辑器能采纳此功能,并承认代码编辑器因无排版问题,需求较弱,但若VSCode支持,他仍会启用。
评论总结
根据评论内容,用户对“剪切/粘贴”功能存在不同看法,主要围绕其设计缺陷、替代方案及用户体验展开。以下是总结:
主要观点与论据
支持“幽灵剪切”(Ghost Cut)的改进
- 作者提出“幽灵剪切”可避免剪贴板被意外覆盖,并简化撤销操作。
- 引用:
- “pressing ctrl+x fades the selected text and makes it inert... Nothing is placed in the clipboard at this point” (评论5, nlawalker)
- “Cut is undoable... If you undo a
cut, put back whatever was on the clipboard beforehand” (评论7, Wowfunhappy)
反对改变现有行为
- 多数用户认为现有设计符合直觉,且“幽灵剪切”会破坏肌肉记忆。
- 引用:
- “This is just as 'broken' as the existing functionality, just in a way that the author prefers” (评论5, nlawalker)
- “I think most people understand 'undo' as 'undo change to file' and not 'undo change to file + OS state'” (评论6, Diogenesian)
剪贴板状态管理的复杂性
- 剪贴板是系统级共享状态,撤销操作难以覆盖跨应用场景。
- 引用:
- “The clipboard is system-wide shared state -- what if another application changed the clipboard between the cut and the undo?” (评论4, atq2119)
- “Your text editor is a cottage surrounded by an outdoors it doesn't control” (评论16, akkartik)
替代方案与工具
- 剪贴板历史工具(如Paste on Mac、Windows内置功能)可缓解问题。
- 引用:
- “Clipboard history apps are a godsend. Like Paste on Mac, or Windows has it built in” (评论13, cush)
- “Emacs mark-and-point UI works for everyone” (评论20, rickydroll)
平衡性总结
- 支持改进:少数用户认可“幽灵剪切”的原子性和撤销逻辑,但认为需系统级实现。
- 反对改变:多数用户认为现有设计稳定,且“幽灵剪切”引入新问题(如布局跳转、多粘贴场景混乱)。
- 中立观点:部分用户指出问题源于跨平台习惯差异或应用层实现不一致,而非核心设计缺陷。