1 पॉइंट द्वारा GN⁺ 5 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • सामान्य 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 नहीं किया गया होता
  • 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 टिप्पणियां

 
GN⁺ 5 시간 전
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 और paste एक atomic action होना चाहिए। अगर कई बार paste करना है तो copy करें।
      cut को undo करते हुए side effects वापस न करना मूलभूत खामी है; undo को शर्तों के हिसाब से कुछ steps पीछे नहीं जाना चाहिए, बल्कि system को पिछली state में restore करना चाहिए।
    • text editor में सुविधाजनक atomic move feature प्रस्तावित करना तर्कसंगत है, लेकिन निजी तौर पर इसकी जरूरत बहुत बड़ी नहीं लगती।
    • text को धुंधला दिखाकर मनचाही जगह ले जाने का तरीका macOS के drag and drop जैसा ही है।
    • macOS Finder में ⌘+C से file copy करके destination पर ⌘+⌥+V से move या ⌘+V से copy करने वाले flow की आलोचना क्यों होती है, समझ नहीं आता। action destination पर तय होता है, इसलिए यह सबसे intuitive है।
      Windows भी cut की गई file को धुंधला दिखाता है और paste करते समय move करता है, जिससे file loss रुकता है, लेकिन ऐसे अच्छे user experience को पर्याप्त credit नहीं मिलता।
    • अगर कई बार paste कर रहे हैं, तो लगता है कि असल में copy करना चाहते थे। कोई भी mental model पूरी तरह सही नहीं होता; अगर cut copy और delete है तो सीधे copy के बाद delete कर सकते हैं, और Vim व Emacs में बस delete कर दें।
  • 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 पर बदलने से बहुत कुछ खोता नहीं दिखता।

    • IDE में selection के बिना cursor को line में कहीं भी रखकर cut दबाकर इसे अक्सर पूरी line delete करने के लिए इस्तेमाल करता हूं। बाएं हाथ से दबाने में आसान shortcut है, लेकिन Ghost Cut इस use case को खराब कर देता है।
  • default cut का user experience लेखक के निजी mental model से मेल नहीं खाता, यह defect नहीं है। अगर गलती से cut किया, तो अक्सर copy करना चाहा होगा, इसलिए text को clipboard में छोड़ना design के लिहाज से उचित है।
    ज्यादातर लोग undo को file changes का undo समझते हैं, file और operating system state दोनों को वापस करने वाला नहीं। configurable cut पर विचार किया जा सकता है, लेकिन यह बहुसंख्यकों से ज्यादा अल्पसंख्यक users के लिए बनी alternative लगती है।

    • मैं उस behavior को defect नहीं मानता, लेकिन कमियों को पहचानकर alternative देने की बात का सम्मान करता हूं। कुछ cut करके clipboard में डालना, फिर सिर्फ change undo करके उस content का इस्तेमाल करना—यह clipboard बनाए रखने वाला behavior मैं काफी अक्सर इस्तेमाल करता हूं।
    • text cut या copy करने के बाद कुछ steps undo करके नई जगह paste करना पसंद है। प्रस्ताव के हिसाब से undo से पहले temporary file में paste करने जैसे intermediate steps जुड़ेंगे।
  • 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 तोड़ने लायक बात नहीं है।

    • paste न किया गया text लगातार धुंधला ही रहेगा या नहीं, दूसरे app में नया text copy करने पर धुंधला text paste होगा या नया clipboard content—ऐसी edge conditions बहुत बढ़ जाती हैं।
      अगर 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 है।

    • Excel में कुछ खामियां होने के बावजूद, मुझे लगता है कि इसे ज्यादातर users के लिए बहुत अच्छे से design किया गया है। cell content के साथ-साथ cell references भी होते हैं, इसलिए cut और copy थोड़ा अलग behave करते हैं।
      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 है।
    • Excel मेरी intent के हिसाब से हर बार सबसे खराब copy-cut-paste तरीका चुनता हुआ लगता है। असल में ऐसा नहीं होगा, लेकिन निजी तौर पर कई मायनों में बेहद non-intuitive है।
    • Excel में मैं पहले copy करता हूं, paste करता हूं, फिर source delete करता हूं। सामान्य cut/paste, paste की जगह को reference करने वाले formulas तोड़ देता है
      default cut बनाए रखना चाहिए था और special move को Ctrl+Shift++ पर assign करना चाहिए था।
    • करीब आधे समय तो यह ठीक से काम भी नहीं करता।