1 points par GN⁺ 5 시간 전 | 1 commentaires | Partager sur WhatsApp
  • Le couper-coller classique traite le déplacement de texte en deux opérations distinctes, ce qui rend une annulation complète impossible et modifie inutilement le flux du document
  • Même si l’on annule une coupe, le contenu du presse-papiers écrasé n’est pas restauré, et même avec un gestionnaire de presse-papiers, on ne rétablit pas l’ensemble des changements produits par une seule frappe
  • Comme le texte disparaît immédiatement, le document est recomposé ; il faut donc retrouver l’endroit où coller, et annuler l’ensemble du déplacement demande au minimum deux annulations
  • Le Ghost Cut d’Ishmael, un éditeur de romans, désactive visuellement la sélection avec Ctrl+X en l’estompant, puis lors du collage la retire de son emplacement d’origine pour la déplacer vers le nouvel emplacement dans le cadre d’une opération atomique unique
  • Ghost Cut n’écrase pas le presse-papiers et permet d’annuler tout le déplacement en une seule fois, mais pour effectuer seulement une coupe à l’ancienne, il faut copier puis appuyer sur Backspace

Fonctionnement du couper-coller traditionnel

  • Le couper-coller combine une coupe, qui retire le texte sélectionné du document pour le placer dans le presse-papiers, et un collage, qui l’insère à un autre endroit
  • On le perçoit comme une seule opération consistant à déplacer du texte d’un endroit à un autre, mais dans les éditeurs il est en réalité traité comme deux actions séparées

Les trois défauts du couper traditionnel

  • L’annulation ne peut pas restaurer le presse-papiers

    • Après une coupe, si l’on appuie sur Ctrl+Z ou Command+Z, le texte du document est restauré, mais le contenu du presse-papiers qui a été écrasé ne revient pas
    • Même avec un gestionnaire de presse-papiers, cela ne revient pas à annuler proprement tous les changements produits par une seule frappe
  • La suppression du texte réorganise immédiatement le document

    • Au moment où l’on coupe le texte, le contenu restant se resserre et les lignes ainsi que les positions dans le document sont réagencées
    • Dans la plupart des cas, le but du couper-coller est de déplacer du texte, mais avant même d’avoir trouvé où le coller, l’écran a changé et il faut retrouver l’emplacement
    • Le coût peut sembler faible, mais cela ajoute une charge cognitive inutile
  • Le déplacement n’est pas traité comme une opération atomique

    • Si l’on annule le collage, seul le texte inséré au nouvel emplacement est supprimé ; pour le restaurer à sa position d’origine, il faut annuler une fois de plus
    • S’il y a eu entre la coupe et le collage des modifications comme la création d’un nouveau paragraphe, il faut d’abord remonter ces opérations une à une avant de pouvoir restaurer la coupe initiale
    • Conceptuellement, il s’agit d’un seul déplacement de texte, mais dans l’historique d’édition il est fragmenté en plusieurs étapes

Comment fonctionne Ghost Cut

  • Dans Ishmael, lorsque l’on appuie sur Ctrl+X, le texte sélectionné s’estompe et passe en état désactivé, tout en restant visible dans le document
    • Cette zone ne peut pas être cliquée et le curseur la saute
    • À ce stade, rien n’est enregistré dans le presse-papiers et aucune action annulable n’est créée
    • En appuyant sur Escape, le texte redevient modifiable
  • Lorsque l’on appuie sur Ctrl+V ou Command+V, la zone estompée est retirée de sa position d’origine puis déplacée à la position actuelle du curseur
    • L’ensemble du déplacement constitue une opération atomique unique, qui peut donc être annulée en une seule fois
    • C’est comparable à la manière dont Excel affiche en grisé les cellules coupées, mais il est difficile de trouver la même approche dans un éditeur de texte
  • Si l’on a besoin du comportement de coupe traditionnel, il faut d’abord copier avec Ctrl+C ou Command+C, puis supprimer le texte d’origine avec Backspace
  • Dans les éditeurs de code, le problème de reflow du document est moins marqué, donc l’intérêt est relativement plus faible, mais si cette fonction était proposée dans VSCode, elle vaudrait la peine d’être activée

1 commentaires

 
GN⁺ 5 시간 전
Avis sur Hacker News
  • J’aimerais qu’on arrête de perturber la sélection/collage de X11. Aujourd’hui, pour l’utiliser comme avant, il faut presque jouer à pile ou face pour savoir s’il faut maintenir Shift
    Le schéma sélection → Ctrl+C → clic → Ctrl+V, qui oblige à utiliser à la fois la souris et le clavier pour copier-coller, est barbare, et les applis modernes abîment ce que X11 avait bien implémenté

  • Couper et coller, ce sont trois actions : couper consiste à copier puis supprimer. De même qu’annuler ne défait pas une copie, le contenu du presse-papiers après un couper ne devrait pas être annulé ; j’utilise tous les jours le fait de couper, annuler, puis coller plusieurs fois
    Avec Ghost Cut, que devrait-on obtenir si on colle plusieurs fois ? L’éditeur devrait-il lire le presse-papiers sans même coller, juste pour faire un rollback ? Et s’il contient une clé secrète, est-ce qu’elle serait exposée à une extension comme Copilot ?
    Dans l’explorateur de fichiers, couper revient en réalité à indiquer successivement une source et une destination pour un déplacement ; il n’existe pas vraiment de presse-papiers du système de fichiers, et on a rarement besoin de coller à plusieurs endroits. Ce n’est pas que la sémantique proposée soit mauvaise, mais ce serait plus propre comme fonctionnalité distincte, avec un raccourci dédié, qui grise le texte puis le déplace de façon atomique

    • Couper et coller devraient être une seule action atomique. Si on veut coller plusieurs fois, il suffit de copier
      Annuler un couper sans annuler ses effets de bord est un défaut fondamental ; une annulation ne devrait pas seulement reculer de quelques étapes selon le contexte, mais restaurer le système à son état précédent
    • Proposer une fonction de déplacement atomique pratique pour les éditeurs de texte est raisonnable, mais personnellement je n’en vois pas un grand besoin
    • Griser un texte puis le déplacer à l’endroit voulu revient en pratique au glisser-déposer de macOS
    • Je ne vois pas pourquoi le flux du Finder de macOS — copier un fichier avec ⌘+C, puis soit le déplacer avec ⌘+⌥+V, soit le copier avec ⌘+V à la destination — serait critiqué. C’est justement le plus intuitif, puisque l’action se décide à la destination
      Windows affiche aussi les fichiers coupés en grisé et les déplace au collage pour éviter les pertes de fichiers, mais cette bonne expérience utilisateur n’est pas assez reconnue
    • Si on colle plusieurs fois, c’est qu’en réalité on voulait probablement copier. Aucun modèle mental n’est absolument correct ; si couper = copier + supprimer, on peut simplement copier puis supprimer soi-même, et dans Vim ou Emacs il suffit de supprimer
  • Ghost Cut ressemble beaucoup au couper/coller d’Excel, et il pourrait même ne pas utiliser le presse-papiers du tout. Un logiciel classique le considère comme copie-collage avec suppression ajoutée, tandis que l’auteur — comme Excel — le voit comme un déplacement de contenu à l’intérieur du document
    Ghost Cut impose toutefois qu’il n’y ait qu’une seule destination précise, et qu’elle soit dans le même programme ou le même document. Cela dit, si le couper actuel n’est au fond qu’une variante du copier-coller, alors copier puis Backspace produit le même effet ; passer à Ghost Cut ne semble donc pas faire perdre grand-chose

    • Dans un IDE, j’utilise souvent couper sans sélection, avec le curseur posé n’importe où sur une ligne, pour supprimer la ligne entière. C’est un raccourci pratique à faire de la main gauche, et Ghost Cut casse cet usage
  • Le problème n’est pas un défaut du couper par défaut, mais le fait que son expérience utilisateur ne corresponde pas au modèle mental personnel de l’auteur. Si on a coupé par erreur, on voulait généralement copier ; il est donc raisonnable de laisser le texte dans le presse-papiers
    La plupart des gens comprennent l’annulation comme l’annulation des modifications du fichier, pas comme un retour en arrière simultané de l’état du fichier et de l’OS. Un couper configurable peut valoir le coup, mais cela ressemble davantage à une alternative adaptée à une minorité qu’à la majorité des utilisateurs

    • Je ne considère pas ce comportement comme un défaut, mais je respecte le fait qu’on en pointe les limites et qu’on propose une alternative. J’exploite assez souvent ce comportement de conservation du presse-papiers : couper quelque chose, le mettre dans le presse-papiers, annuler uniquement la modification, puis réutiliser ce contenu
    • Je préfère souvent couper ou copier du texte, annuler de quelques étapes, puis le coller à un nouvel endroit. Avec la proposition, il faudrait ajouter une étape intermédiaire, comme coller dans un fichier temporaire avant d’annuler
  • Couper consiste à déplacer du texte vers le presse-papiers, qui est une application distincte de l’application courante. De même qu’on ne s’attend pas à ce qu’une annulation dans l’app B modifie aussi l’app A après y avoir fait un changement, on ne s’attend pas à ce qu’annuler affecte le presse-papiers
    Ghost Cut ressemble à Excel, et c’est justement pour cela qu’il me déroute souvent. Dans Excel, il arrive qu’après avoir copié des cellules puis modifié quelque chose avant de coller, on découvre que la copie n’était pas une vraie valeur copiée mais une référence à la sélection ; si cette zone a changé ou a été annulée, il devient parfois impossible de coller quoi que ce soit

  • Si on repartait de zéro, les critiques de l’actuel couper/coller seraient raisonnables. En revanche, affirmer que comme couper et coller sont deux actions, une seule annulation devrait annuler les deux, paraît étrange
    C’est un peu comme un choix de type RISC/CISC : a-t-on une seule commande CUTANDPASTE, ou bien deux commandes séparées, CUT et PASTE ?

  • Il ne faut pas changer le comportement attendu. Excel fonctionne un peu comme ça, et c’est extrêmement pénible précisément parce que ça ne fait pas ce qu’on attend
    Couper doit immédiatement placer le contenu dans le presse-papiers pour pouvoir aussi le coller dans d’autres programmes ; ça ne vaut pas le coup de casser les attentes et les usages normaux de la majorité pour améliorer l’expérience d’une minorité

    • Il y a trop de cas limites : est-ce qu’un texte non collé reste grisé indéfiniment ? Si on copie un nouveau texte dans une autre appli, colle-t-on ce nouveau contenu ou l’ancien texte grisé ?
      Si Ctrl+X ne touche pas au presse-papiers, on ne peut même plus coller dans un autre programme. Le gain est trop faible par rapport aux ennuis créés dès qu’on sort du flux idéal
  • Ce point de vue se défend, mais j’ai du mal à être d’accord. J’aimerais plutôt qu’on règle d’abord le détournement de copie, quand un site ou une appli, sous prétexte d’aider, met dans le presse-papiers quelque chose de totalement différent de ce qu’on a sélectionné
    Quand je copie une URL, je ne veux pas non plus que le navigateur ajoute arbitrairement https://

  • Windows Explorer se comporte un peu de cette manière quand on coupe des fichiers, mais il écrit aussi dans le presse-papiers
    Ghost Cut est donc lui aussi cassé, simplement d’une manière différente du comportement existant, même si elle correspond davantage aux préférences de l’auteur. Cela reste une idée intéressante, parce qu’elle fait réfléchir à la manière dont les autres applis auraient évolué si couper/coller n’avait pas été conçu comme une fonction globale du système et inter-applications

  • Je pense que je n’aimerais pas cette approche. Dans le même genre, Excel est l’application que je déteste le plus pour couper/copier/coller

    • Malgré certains défauts, Excel me semble très bien conçu pour la majorité des utilisateurs. Il y a non seulement le contenu des cellules, mais aussi les références de cellules, ce qui fait que couper et copier se comportent de façon subtilement différente
      Couper est en général un déplacement atomique qui se termine par un seul collage, donc toutes les références concernées sont mises à jour, qu’elles pointent à l’intérieur ou à l’extérieur de la zone déplacée, et qu’elles soient relatives ou absolues. C’est aussi pour cela que l’indication disparaît après collage et qu’on ne peut pas coller deux fois
      À l’inverse, lors d’une copie, seules les références relatives entre les cellules copiées sont mises à jour ; les références absolues ou celles vers des cellules non copiées ne changent pas, et on peut coller plusieurs fois. Si l’on prend même en compte les références de plage, c’est déjà étonnant que tout cela fonctionne de manière aussi prévisible, et la contrainte qui annule l’opération quand on modifie la zone d’origine reste compréhensible. Donc, dans Excel, copier puis supprimer n’est pas équivalent à couper
    • Avec Excel, j’ai toujours l’impression qu’il choisit à chaque fois la pire manière possible de copier, couper ou coller selon mon intention. Ce n’est sans doute pas vraiment le cas, mais à mes yeux cela reste très peu intuitif à bien des égards
    • Dans Excel, je copie d’abord, je colle, puis je supprime l’original. Le couper/coller classique casse les formules qui font référence à l’emplacement où l’on va coller
      Il aurait fallu conserver le couper par défaut et attribuer ce déplacement spécial à Ctrl+Shift++
    • Environ une fois sur deux, ça ne fonctionne même pas correctement