1 Punkte von GN⁺ 5 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • 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+X die 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 Backspace drü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+Z oder Command+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
  • 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+V oder Command+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+C oder Command+C kopieren und anschließend mit Backspace den 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

 
GN⁺ 5 시간 전
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.

    • Ausschneiden und Einfügen sollten ein einziger atomarer Vorgang sein. Wenn man mehrfach einfügen will, sollte man kopieren.
      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.
    • Eine praktische atomare Verschiebefunktion für Texteditoren vorzuschlagen, ist vernünftig, persönlich sehe ich aber keinen großen Bedarf.
    • Text ausgegraut anzuzeigen und ihn dann an die gewünschte Stelle zu verschieben, ist im Grunde dasselbe wie Drag-and-drop unter macOS.
    • Ich verstehe nicht, warum der Ablauf im macOS Finder kritisiert wird: Dateien mit ⌘+C kopieren und am Ziel mit ⌘+⌥+V verschieben oder mit ⌘+V kopieren. 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.
    • Wenn man mehrfach einfügt, wollte man vielleicht eigentlich kopieren. Kein mentales Modell ist absolut richtig; wenn Ausschneiden Kopieren plus Löschen ist, kann man einfach selbst kopieren und dann löschen, und in Vim und Emacs löscht man schlicht.
  • 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 Backspace denselben Effekt erzielen, sodass beim Wechsel zu Ghost Cut nicht viel verloren zu gehen scheint.

    • In IDEs nutze ich Ausschneiden oft ohne Auswahl, indem ich den Cursor irgendwo in eine Zeile setze, als Löschen der ganzen Zeile. Der Shortcut ist mit der linken Hand bequem zu drücken, aber Ghost Cut würde diesen Anwendungsfall kaputtmachen.
  • 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.

    • Ich sehe dieses Verhalten nicht als Defekt, respektiere aber, dass die Nachteile benannt und eine Alternative vorgeschlagen werden. Ich nutze recht häufig das Beibehalten des Clipboards, bei dem ich etwas ausschneide, ins Clipboard lege, nur die Änderung rückgängig mache und den Inhalt dann verwende.
    • Ich bevorzuge es, Text auszuschneiden oder zu kopieren, ein paar Undo-Schritte auszuführen und ihn an einer neuen Stelle einzufügen. Nach dem Vorschlag käme ein Zwischenschritt hinzu, etwa vor dem Undo in eine temporäre Datei einzufügen.
  • 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 CUTANDPASTE einer ist oder ob es CUT und PASTE als 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.

    • Es gäbe viel zu viele Randfälle: Bleibt nicht eingefügter Text weiter ausgegraut, und wenn man in einer anderen App neuen Text kopiert, was wird dann eingefügt – der ausgegraute Text oder der neue Clipboard-Inhalt?
      Wenn Ctrl+X das 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.

    • Ich finde, Excel ist trotz einiger Mängel für die meisten Nutzer sehr gut gestaltet. Es gibt nicht nur Zellinhalte, sondern auch Zellbezüge, weshalb Ausschneiden und Kopieren subtil unterschiedlich funktionieren.
      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.
    • Excel fühlt sich so an, als würde es je nach meiner Absicht jedes Mal die schlechteste Art von Kopieren, Ausschneiden und Einfügen wählen. In Wirklichkeit ist es wohl nicht so, aber für mich ist es in vieler Hinsicht sehr nicht intuitiv.
    • In Excel kopiere ich zuerst, füge ein und lösche danach das Original. Normales Ausschneiden/Einfügen zerstört nämlich Formeln, die auf die Einfügeposition verweisen.
      Das normale Ausschneiden hätte beibehalten werden sollen, und ein spezielles Verschieben hätte man auf Ctrl+Shift++ legen sollen.
    • In etwa der Hälfte der Fälle funktioniert es nicht einmal richtig.