- सामान्य cut और paste टेक्स्ट को move करने को दो operations में बांटकर संभालते हैं, जिससे पूरा undo करना असंभव हो जाता है और document flow भी अनावश्यक रूप से बदलता है
- cut को undo करने पर भी overwrite हुआ clipboard content recover नहीं होता, और clipboard manager इस्तेमाल करने पर भी एक keypress से हुए पूरे बदलाव को वापस नहीं किया जा सकता
- टेक्स्ट तुरंत गायब हो जाता है और document reflow होता है, इसलिए paste करने की जगह फिर से ढूंढनी पड़ती है; पूरे move को undo करने के लिए कम से कम दो undo चाहिए
- novel editor Ishmael का Ghost Cut
Ctrl+Xसे selection को fade करके inactive करता है, फिर paste करते समय उसे original जगह से हटाकर नई जगह ले जाने वाला single atomic operation करता है - Ghost Cut clipboard को overwrite नहीं करता और पूरे move को एक बार में undo कर सकता है, लेकिन पुराने तरीके से सिर्फ cut करना हो तो copy के बाद
Backspaceदबाना होगा
मौजूदा cut/paste का व्यवहार
- cut/paste, चुने गए टेक्स्ट को document से हटाकर clipboard में डालने वाले cut और उसे किसी दूसरी जगह insert करने वाले paste का combination है
- इसे टेक्स्ट को एक जगह से दूसरी जगह ले जाने वाला एक operation माना जाता है, लेकिन असल editors में इसे दो अलग-अलग operations के रूप में handle किया जाता है
मौजूदा cut की तीन कमियां
-
undo से clipboard recover नहीं किया जा सकता
- cut के बाद
Ctrl+ZयाCommand+Zदबाने पर document का टेक्स्ट restore हो जाता है, लेकिन overwrite हुआ clipboard content वापस नहीं आता - clipboard manager इस्तेमाल करने पर भी एक keypress से बने सभी changes को साफ तौर पर undo नहीं किया गया होता
- cut के बाद
-
original text हटने से document तुरंत rearrange हो जाता है
- टेक्स्ट cut करते ही बचा हुआ content खिंच जाता है और document की lines और positions फिर से arrange हो जाती हैं
- ज्यादातर cut/paste का उद्देश्य टेक्स्ट move करना होता है, लेकिन paste point खोजने से पहले ही screen बदल जाती है और जगह फिर से खोजनी पड़ती है
- बोझ छोटा हो सकता है, लेकिन अनावश्यक cognitive cost पैदा होती है
-
move को atomic operation के रूप में handle नहीं किया जाता
- paste को undo करने पर नई जगह insert हुआ टेक्स्ट ही हटता है, और original जगह पर restore करने के लिए एक बार और undo करना पड़ता है
- अगर cut और paste के बीच नया paragraph बनाने जैसी editing हुई हो, तो original cut तक restore करने के लिए पहले उन operations को क्रम से undo करना होगा
- conceptually यह एक text move है, लेकिन edit history में कई steps में बंट जाता है
Ghost Cut कैसे काम करता है
- Ishmael में
Ctrl+Xदबाने पर चुना हुआ टेक्स्ट fade होकर inactive state में चला जाता है, लेकिन document में वैसे ही रहता है- उस area पर click नहीं किया जा सकता और cursor भी उसे skip कर देता है
- इस point पर clipboard में कुछ भी save नहीं होता, और कोई undoable operation भी create नहीं होता
Escapeदबाने पर टेक्स्ट फिर से editable state में restore हो जाता है
Ctrl+VयाCommand+Vदबाने पर faded area को original जगह से हटाकर current cursor position पर move किया जाता है- पूरा move एक single atomic operation है, इसलिए एक undo से वापस किया जा सकता है
- यह Excel में cut किए गए cells को faded दिखाने के तरीके जैसा है, लेकिन text editors में ऐसा तरीका मिलना मुश्किल है
- मौजूदा cut behavior चाहिए तो
Ctrl+CयाCommand+Cसे copy करकेBackspaceसे original text delete करना होगा - code editors में document reflow की समस्या कम होती है, इसलिए जरूरत तुलनात्मक रूप से कम है, लेकिन अगर VSCode में मिले तो इसे enable करके इस्तेमाल किया जा सकता है
1 टिप्पणियां
Hacker News की रायें
X11 के selection/paste में दखल न दिया जाए तो अच्छा होगा। अब पहले की तरह इस्तेमाल करने के लिए हर बार किस्मत पर छोड़ना पड़ता है कि Shift दबाना होगा या नहीं।
कॉपी और पेस्ट के लिए mouse और keyboard दोनों इस्तेमाल करवाने वाला
selection → Ctrl+C → click → Ctrl+Vतरीका बर्बर है, और X11 ने जिसे सही तरह लागू किया था उसे modern apps खराब कर रहे हैं।कट और पेस्ट तीन क्रियाएं हैं; कट, copy और delete से मिलकर बनता है। जैसे undo copy को वापस नहीं करता, वैसे ही cut के clipboard content को भी वापस नहीं करना चाहिए। मैं रोज़ cut करके undo करने के बाद कई बार paste करने का तरीका इस्तेमाल करता हूं।
Ghost Cut में कई बार paste करने पर क्या आना चाहिए, rollback के लिए editor को paste न किए गए clipboard को पढ़ना चाहिए या नहीं, और अगर उसमें secret key हो तो क्या वह Copilot जैसे extensions के सामने उजागर होगी—ये सवाल हैं।
file explorer में cut असल में source और destination को क्रम से तय करने वाला move है; कोई file-system clipboard भी नहीं होता और कई locations पर paste करने की जरूरत भी कम ही पड़ती है। प्रस्तावित semantics खराब हैं, ऐसा नहीं; बल्कि अलग shortcut से text को धुंधला दिखाकर atomically move करने वाला स्वतंत्र feature ज्यादा साफ-सुथरा होगा।
cut को undo करते हुए side effects वापस न करना मूलभूत खामी है; undo को शर्तों के हिसाब से कुछ steps पीछे नहीं जाना चाहिए, बल्कि system को पिछली state में restore करना चाहिए।
⌘+Cसे file copy करके destination पर⌘+⌥+Vसे move या⌘+Vसे copy करने वाले flow की आलोचना क्यों होती है, समझ नहीं आता। action destination पर तय होता है, इसलिए यह सबसे intuitive है।Windows भी cut की गई file को धुंधला दिखाता है और paste करते समय move करता है, जिससे file loss रुकता है, लेकिन ऐसे अच्छे user experience को पर्याप्त credit नहीं मिलता।
Ghost Cut, Excel के cut/paste से लगभग समान है, और शायद clipboard का इस्तेमाल ही न करे। सामान्य software इसे copy-paste में delete जोड़ने जैसा देखता है, लेकिन लेखक और Excel इसे document के भीतर content move करने के रूप में देखते हैं।
Ghost Cut में constraint है कि destination ठीक एक ही हो और उसी program या document के अंदर हो। फिर भी अगर मौजूदा cut आखिरकार copy-paste का variant है, तो
copy फिर Backspaceसे वही असर मिल सकता है, इसलिए Ghost Cut पर बदलने से बहुत कुछ खोता नहीं दिखता।default cut का user experience लेखक के निजी mental model से मेल नहीं खाता, यह defect नहीं है। अगर गलती से cut किया, तो अक्सर copy करना चाहा होगा, इसलिए text को clipboard में छोड़ना design के लिहाज से उचित है।
ज्यादातर लोग undo को file changes का undo समझते हैं, file और operating system state दोनों को वापस करने वाला नहीं। configurable cut पर विचार किया जा सकता है, लेकिन यह बहुसंख्यकों से ज्यादा अल्पसंख्यक users के लिए बनी alternative लगती है।
cut, app से text को अलग application यानी clipboard में move करने की क्रिया है। जैसे app A को modify करने के बाद app B में undo करने पर A के भी बदल जाने की उम्मीद नहीं करता, वैसे ही undo से clipboard प्रभावित होगा, यह उम्मीद नहीं करता।
Ghost Cut Excel जैसा है और इसी वजह से अक्सर उलझन होती है। Excel में cell copy करके edit करने के बाद paste करने पर कभी-कभी पता चलता है कि copy असली value नहीं, बल्कि selection range reference था; और वह range बदल गई या undo हो गई तो कुछ paste नहीं हो पाता।
अगर शुरुआत से design करना हो तो मौजूदा cut/paste की आलोचना उचित है। हालांकि cut और paste दो actions हैं, इसलिए एक undo से दोनों वापस होने चाहिए—यह दावा अटपटा है।
यह कुछ वैसा ही है जैसे पूछा जाए कि command एक
CUTANDPASTEहै याCUTऔरPASTEदो—एक RISC/CISC जैसी choice।expected behavior नहीं बदलना चाहिए। Excel कुछ इसी तरह behave करता है, लेकिन मनचाहे ढंग से काम नहीं करता और बेहद असुविधाजनक है।
cut को तुरंत clipboard में जाना चाहिए ताकि दूसरे programs में भी paste किया जा सके; कुछ लोगों के लिए सुधार करने के चक्कर में बहुसंख्यक users की expectations और normal flow तोड़ने लायक बात नहीं है।
अगर
Ctrl+Xपर clipboard को छुआ ही नहीं, तो दूसरे program में paste भी नहीं कर पाएंगे। ideal flow से हटते ही जो परेशानियां पैदा होती हैं, उनके मुकाबले फायदा बहुत छोटा है।ऐसा नजरिया रखना स्वतंत्रता की बात है, लेकिन सहमत होना मुश्किल है। इससे बेहतर होगा कि जब selected item copy करना चाहें और site या app मदद के नाम पर बिल्कुल अलग content डाल दे, ऐसी copy hijacking पहले ठीक की जाए।
URL copy करते समय browser अपने मन से
https://जोड़ दे, यह भी नहीं चाहिए।Windows Explorer भी files cut करते समय कुछ इसी तरह behave करता है, लेकिन clipboard में भी record करता है।
Ghost Cut भी मौजूदा behavior से अलग तरीके से टूटा हुआ ही है, बस लेखक की पसंद से मेल खाता है। फिर भी यह सोचने पर मजबूर करने वाला दिलचस्प विचार है कि अगर cut/paste को system-wide और cross-app feature के रूप में न बनाया गया होता, तो बाकी apps कैसे विकसित होते।
यह तरीका मुझे पसंद नहीं आएगा। इसी तरह behave करने वाला Excel, cut-copy-paste के मामले में मेरा सबसे नापसंद app है।
cut आमतौर पर एक paste में खत्म होने वाला atomic move है, इसलिए moved range के अंदर-बाहर और relative/absolute references की परवाह किए बिना सभी relevant references update हो जाते हैं। paste के बाद indication गायब हो जाती है और दोबारा paste नहीं कर सकते—इसी वजह से।
दूसरी ओर copy करने पर copied cells के बीच के relative references ही update होते हैं; absolute references या copy न किए गए cells के references नहीं बदलते, और कई बार paste किया जा सकता है। range references तक सोचें तो इस तरह expected तरीके से काम करना ही चौंकाने वाला है, और source range edit करने पर operation cancel हो जाने की constraint भी समझ में आती है। इसलिए Excel में copy के बाद delete करना, cut से अलग action है।
default cut बनाए रखना चाहिए था और special move को
Ctrl+Shift++पर assign करना चाहिए था।