- Herkömmliches Ausschneiden und Einfügen teilt das Verschieben von Text in zwei Vorgänge auf, wodurch vollständiges Rückgängigmachen unmöglich wird und sogar der Dokumentfluss unnötig verändert wird
- Selbst wenn man das Ausschneiden rückgängig macht, wird der überschriebene Inhalt der Zwischenablage nicht wiederhergestellt; auch ein Clipboard-Manager macht nicht die gesamte Änderung rückgängig, die durch einen einzigen Tastendruck entstanden ist
- Da Text sofort verschwindet und das Dokument neu umbricht, muss man die Einfügestelle erneut suchen; um die gesamte Verschiebung rückgängig zu machen, sind mindestens zwei Undo-Schritte nötig
- Ghost Cut im Romane-Editor Ishmael deaktiviert mit
Ctrl+Xdie Auswahl ausgegraut und führt beim Einfügen einen einzigen atomaren Vorgang aus, bei dem sie an der ursprünglichen Stelle entfernt und an die neue Position verschoben wird - Ghost Cut überschreibt die Zwischenablage nicht und kann die gesamte Verschiebung auf einmal rückgängig machen; wer jedoch nur auf herkömmliche Weise ausschneiden möchte, muss kopieren und anschließend
Backspacedrücken
Verhalten des herkömmlichen Ausschneidens/Einfügens
- Ausschneiden/Einfügen ist eine Kombination aus Ausschneiden, bei dem ausgewählter Text aus dem Dokument entfernt und in die Zwischenablage gelegt wird, und Einfügen, bei dem er an anderer Stelle eingefügt wird
- Es wird zwar als ein einziger Vorgang wahrgenommen, bei dem Text von einer Position an eine andere verschoben wird, in tatsächlichen Editoren wird es jedoch als zwei getrennte Vorgänge behandelt
Drei Schwächen des herkömmlichen Ausschneidens
-
Undo kann die Zwischenablage nicht wiederherstellen
- Drückt man nach dem Ausschneiden
Ctrl+ZoderCommand+Z, wird der Text im Dokument wiederhergestellt, der überschriebene Inhalt der Zwischenablage kehrt jedoch nicht zurück - Selbst mit einem Clipboard-Manager wird nicht sauber jede Änderung rückgängig gemacht, die durch einen einzigen Tastendruck entstanden ist
- Drückt man nach dem Ausschneiden
-
Durch das Löschen des Originals wird das Dokument sofort neu angeordnet
- In dem Moment, in dem Text ausgeschnitten wird, rückt der verbleibende Inhalt nach, und Zeilen sowie Positionen im Dokument werden neu angeordnet
- Bei den meisten Cut-and-Paste-Vorgängen geht es darum, Text zu verschieben; doch noch bevor man die Einfügestelle gefunden hat, verändert sich der Bildschirm und man muss die Position erneut suchen
- Die Belastung mag gering sein, verursacht aber unnötigen kognitiven Aufwand
-
Die Verschiebung wird nicht als atomarer Vorgang behandelt
- Macht man das Einfügen rückgängig, wird nur der an der neuen Stelle eingefügte Text entfernt; um ihn an der ursprünglichen Stelle wiederherzustellen, ist ein weiterer Undo-Schritt nötig
- Wenn zwischen Ausschneiden und Einfügen Bearbeitungen wie das Erstellen eines neuen Absatzes lagen, müssen diese Vorgänge der Reihe nach rückgängig gemacht werden, bevor auch das ursprüngliche Ausschneiden wiederhergestellt werden kann
- Konzeptuell ist es eine einzige Textverschiebung, in der Bearbeitungshistorie wird sie jedoch in mehrere Schritte aufgeteilt
Funktionsweise von Ghost Cut
- Drückt man in Ishmael
Ctrl+X, wird der ausgewählte Text ausgegraut und in einen inaktiven Zustand versetzt, bleibt aber im Dokument erhalten- Der betreffende Bereich ist nicht anklickbar, und auch der Cursor überspringt ihn
- Zu diesem Zeitpunkt wird nichts in der Zwischenablage gespeichert, und es wird auch kein rückgängig zu machender Vorgang erzeugt
- Drückt man
Escape, wird der Text wieder in einen bearbeitbaren Zustand versetzt
- Drückt man
Ctrl+VoderCommand+V, wird der ausgegraute Bereich von seiner ursprünglichen Position entfernt und an die aktuelle Cursorposition verschoben- Die gesamte Verschiebung ist ein einziger atomarer Vorgang und kann daher mit einem einzigen Undo rückgängig gemacht werden
- Das ähnelt der Art, wie Excel ausgeschnittene Zellen ausgegraut markiert, ist in Texteditoren aber kaum zu finden
- Wenn das herkömmliche Ausschneideverhalten benötigt wird, muss man mit
Ctrl+CoderCommand+Ckopieren und anschließend mitBackspaceden Originaltext löschen - In Code-Editoren ist das Problem des Dokument-Reflows geringer, sodass der Bedarf vergleichsweise niedriger ist; wäre es in VSCode verfügbar, wäre es aber eine aktivierenswerte Option
1 Kommentare
Kommentare auf Hacker News
Ich wünschte, man würde Auswahl/Einfügen unter X11 nicht stören. Inzwischen muss man jedes Mal auf gut Glück herausfinden, ob man wie früher Shift drücken muss.
Die Methode
Auswählen → Ctrl+C → Klicken → Ctrl+V, bei der man zum Kopieren und Einfügen sowohl Maus als auch Tastatur benutzen muss, ist barbarisch; moderne Apps machen kaputt, was X11 richtig umgesetzt hatte.Ausschneiden und Einfügen sind drei Vorgänge: Ausschneiden besteht aus Kopieren und Löschen. So wie Undo das Kopieren nicht rückgängig macht, sollte es auch den Clipboard-Inhalt eines Ausschneidevorgangs nicht zurücknehmen; ich nutze täglich den Ablauf, etwas auszuschneiden, Undo zu drücken und es dann mehrfach einzufügen.
Bei Ghost Cut stellt sich die Frage, was bei mehrfachem Einfügen herauskommen soll, ob der Editor für ein Rollback das Clipboard lesen muss, obwohl noch gar nichts eingefügt wurde, und ob Inhalte wie geheime Schlüssel dann Erweiterungen wie Copilot offengelegt werden.
Das Ausschneiden im Datei-Explorer ist eigentlich ein Verschieben, bei dem nacheinander Quelle und Ziel angegeben werden; es gibt kein Datei-System-Clipboard, und es kommt selten vor, dass man an mehrere Orte einfügt. Ich sage nicht, dass die vorgeschlagene Semantik schlecht ist, aber eine eigenständige Funktion mit separatem Shortcut, die Text ausgegraut anzeigt und ihn dann atomar verschiebt, wäre sauberer.
Beim Undo eines Ausschneidens Nebeneffekte nicht zurückzunehmen, ist ein grundlegender Fehler; Undo sollte nicht je nach Bedingung nur ein paar Schritte zurückgehen, sondern das System in den vorherigen Zustand wiederherstellen.
⌘+Ckopieren und am Ziel mit⌘+⌥+Vverschieben oder mit⌘+Vkopieren. Da die Aktion am Ziel entschieden wird, ist das am intuitivsten.Windows zeigt ausgeschnittene Dateien ebenfalls ausgegraut an und verschiebt sie erst beim Einfügen, um Dateiverlust zu verhindern; diese gute User Experience wird aber nicht ausreichend gewürdigt.
Ghost Cut ist fast dasselbe wie Ausschneiden/Einfügen in Excel und muss das Clipboard vielleicht gar nicht verwenden. Gewöhnliche Software betrachtet es als Kopieren und Einfügen plus Löschen; der Autor und Excel betrachten es dagegen als Verschieben von Inhalt innerhalb eines Dokuments.
Ghost Cut hat die Einschränkung, dass es genau ein Ziel gibt und dieses im selben Programm oder Dokument liegen muss. Wenn das bisherige Ausschneiden am Ende aber ohnehin nur eine Variante von Kopieren und Einfügen ist, kann man mit
Kopieren, dann Backspacedenselben Effekt erzielen, sodass beim Wechsel zu Ghost Cut nicht viel verloren zu gehen scheint.Dass die User Experience des normalen Ausschneidens nicht zum persönlichen mentalen Modell des Autors passt, ist kein Defekt. Wenn man versehentlich ausgeschnitten hat, wollte man meist kopieren, daher ist ein Design sinnvoll, das den Text im Clipboard belässt.
Die meisten verstehen Undo als Rücknahme von Dateiänderungen, nicht als Zurücksetzen von Datei- und Betriebssystemzustand zusammen. Konfigurierbares Ausschneiden wäre eine Überlegung wert, aber es ist eher eine Alternative für eine Minderheit als für die Mehrheit der Nutzer.
Ausschneiden ist ein Vorgang, bei dem eine App Text in das Clipboard verschiebt, also in eine separate Anwendung. So wie ich nicht erwarte, dass nach einer Änderung in App A ein Undo in App B auch A verändert, erwarte ich nicht, dass Undo das Clipboard beeinflusst.
Ghost Cut ähnelt Excel, und genau deshalb bringt es mich oft durcheinander. In Excel kann es passieren, dass man Zellen kopiert, sie bearbeitet und dann einfügen will, aber die Kopie kein tatsächlicher Wert war, sondern ein Verweis auf die Auswahl, und nach Änderung oder Undo dieses Bereichs nichts mehr eingefügt werden kann.
Wenn man von Grund auf neu entwerfen würde, ist die Kritik am heutigen Ausschneiden/Einfügen plausibel. Allerdings sind Ausschneiden und Einfügen zwei Vorgänge, daher wirkt die Behauptung seltsam, dass ein einziges Undo beide zurücknehmen müsse.
Das ähnelt einer RISC/CISC-artigen Entscheidung, ob der Befehl
CUTANDPASTEeiner ist oder ob esCUTundPASTEals zwei Befehle gibt.Man sollte erwartetes Verhalten nicht ändern. Excel verhält sich ähnlich, ist aber sehr unbequem, weil es nicht so funktioniert, wie ich es möchte.
Ausschneiden sollte sofort ins Clipboard schreiben, damit man auch in andere Programme einfügen kann; es lohnt sich nicht, die Erwartungen und normalen Abläufe der Mehrheit zu brechen, um es für eine Minderheit zu verbessern.
Wenn
Ctrl+Xdas Clipboard nicht anfasst, kann man auch nicht in andere Programme einfügen. Der Nutzen ist viel zu klein im Vergleich zu den Problemen, die entstehen, sobald man den Idealablauf verlässt.Diese Sichtweise ist legitim, aber ich kann ihr kaum zustimmen. Mir wäre lieber, man würde zuerst Copy Hijacking lösen, bei dem eine Website oder App beim Kopieren eines ausgewählten Elements angeblich helfen will und stattdessen völlig anderen Inhalt einfügt.
Ich möchte auch nicht, dass der Browser beim Kopieren einer URL eigenmächtig
https://davorsetzt.Auch Windows Explorer verhält sich beim Ausschneiden von Dateien ähnlich, schreibt aber ebenfalls ins Clipboard.
Ghost Cut ist letztlich nur auf eine andere Weise als das bestehende Verhalten kaputt, passt aber zum Geschmack des Autors. Trotzdem ist es ein interessanter Gedanke, darüber nachzudenken, wie sich andere Apps entwickelt hätten, wenn Ausschneiden/Einfügen nicht als systemweite und appübergreifende Funktion entstanden wäre.
Diese Methode würde mir vermutlich nicht gefallen. Das ähnlich funktionierende Excel ist für Ausschneiden, Kopieren und Einfügen meine meistgehasste App.
Ausschneiden ist in der Regel eine atomare Verschiebung, die mit einem einzigen Einfügen endet; deshalb werden alle relevanten Bezüge aktualisiert, egal ob sie innerhalb oder außerhalb des verschobenen Bereichs liegen und egal ob relativ oder absolut. Aus diesem Grund verschwindet die Markierung nach dem Einfügen und man kann nicht zweimal einfügen.
Beim Kopieren dagegen werden nur relative Bezüge zwischen den kopierten Zellen aktualisiert; absolute Bezüge oder Bezüge von nicht kopierten Zellen ändern sich nicht, und man kann mehrfach einfügen. Wenn man auch Bereichsbezüge berücksichtigt, ist es erstaunlich, dass das überhaupt wie erwartet funktioniert, und die Einschränkung, dass eine Bearbeitung des ursprünglichen Bereichs die Aktion abbricht, ist nachvollziehbar. Daher ist Kopieren und anschließendes Löschen in Excel ein anderer Vorgang als Ausschneiden.
Das normale Ausschneiden hätte beibehalten werden sollen, und ein spezielles Verschieben hätte man auf
Ctrl+Shift++legen sollen.