鬼剪切 - 或者说剪切和粘贴在各处都是崩溃的
剪切和粘贴在你使用过的每一个文字处理器、代码编辑器和浏览器文本区域中都是崩溃的。这种情况已经持续了几十年。为了确保我们在同一页面上:剪切和粘贴是两个操作的组合:剪切以从文档中移除文本并将其放入剪贴板中,粘贴以在文档的一个新位置插入该文本。如果它如此普遍,怎么可能会崩溃呢?让我列举几种情况! 1. 剪切是不可逆的 剪切和粘贴的第一个缺陷是,剪切不能完全撤销。在剪切后使用撤销(控制+Z 或者 命令+Z)会将文本恢复到剪切前的状态,但剪贴板的内容仍然保持不变。如果你后悔替换了剪贴板的内容,那就太糟糕了,它们已经在数字空间中消失了。即使你使用剪贴板管理器,撤销操作仍然没有完全撤销一个键所做的所有事情。 2. 剪切会重新排版 第二个缺陷是剪切会重新排版文档。剪切和粘贴几乎总是为了移动文本,但在我剪切的瞬间,文本重新排版,我得再次找到我要粘贴的点。这或许是一个微小的认知负担,但我认为这是不必要的。 3. 剪切和粘贴不是原子操作 第三个也是最后一个缺陷是,尽管剪切和粘贴在概念上是将文本从一个地方移动到另一个地方的操作,但它不能作为一个单独的步骤进行撤销(暂时忽略剪贴板问题)。撤销粘贴将移除新添加的文本,但还需要第二次撤销才能完全恢复文本——假设在剪切和粘贴之间没有任何编辑。如果有中间编辑,比如创建一个新段落,那么在我们达到原始剪切之前必须先撤销那一部分。我在 Ishmael 中添加了一种机制来“修复”这些缺陷。好消息是,它不需要重新训练肌肉记忆或任何你已经在做的事情。我称之为“鬼剪切”,工作原理是:按下 ctrl+x 会使选中的文本变淡并使其失效——你无法点击剪切的文本,光标会跳过它,但它仍然存在于文档中。在这一点上,没有任何内容被放入剪贴板,也没有任何东西可以撤销。如果你决定不粘贴,按下 escape 会将文本恢复到其活动可编辑状态。粘贴(通常的控制-V 或 命令-V)会将幽灵文本从其原始位置移除,并放置在光标处,从而在没有涉及剪贴板的情况下创建一个单一的原子移动操作。换句话说:它是完全可逆的,并且可以一次性撤销,而不会污染你的剪贴板。这里是它的实际操作:鬼剪切的实际操作。这并不是没有先例。有些应用程序做类似的事情,例如 Excel,它会淡化剪切的单元格,但我在文本编辑器中还没有见过。 副作用 如果你想要剪切的原始语义呢?鬼剪切使得这个操作变成了两个键而不是一个:复制到剪贴板(控制-C 或 命令-C)然后按 Backspace 从原始文档中移除它。我几乎很少在没有粘贴的情况下使用剪切,这对我来说显然是一个胜利。 结论 我会非常高兴看到各种文本编辑器采用这个功能。诚然,在代码编辑器中的案例并不那么强烈。代码并不受重新排版问题的影响,但即便如此,如果 VSCode 存在鬼剪切,我可以想象自己在启用它的情况下工作。
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡