- การตัดและวางทั่วไปแบ่งการย้ายข้อความออกเป็นสองงาน ทำให้ Undo ได้ไม่สมบูรณ์ และยังเปลี่ยน flow ของเอกสารโดยไม่จำเป็น
- แม้จะยกเลิกการตัดได้ แต่ เนื้อหาใน clipboard ที่ถูกเขียนทับจะไม่ถูกกู้คืน และแม้ใช้ clipboard manager ก็ไม่สามารถย้อนการเปลี่ยนแปลงทั้งหมดที่เกิดจากการกดปุ่มครั้งเดียวได้
- เมื่อข้อความหายไปทันที เอกสารจะเกิด reflow ทำให้ต้องหาตำแหน่งที่จะวางใหม่ และหากต้องการยกเลิกการย้ายทั้งหมด ต้อง Undo อย่างน้อยสองครั้ง
- Ghost Cut ของ Ishmael ซึ่งเป็นโปรแกรมแก้ไขนิยาย จะทำให้ selection จางลงและไม่ active ด้วย
Ctrl+Xจากนั้นเมื่อวาง จึงลบออกจากตำแหน่งเดิมและย้ายไปตำแหน่งใหม่เป็น งาน atomic งานเดียว - Ghost Cut ไม่เขียนทับ clipboard และสามารถย้อนการย้ายทั้งหมดได้ในครั้งเดียว แต่ถ้าต้องการตัดแบบเดิม ต้องคัดลอกแล้วกด
Backspace
พฤติกรรมของการตัด/วางแบบเดิม
- การตัด/วางคือการรวมกันของ การตัด ที่ลบข้อความที่เลือกออกจากเอกสารและใส่ไว้ใน clipboard กับ การวาง ที่แทรกข้อความนั้นในตำแหน่งอื่น
- แม้จะถูกมองว่าเป็นงานเดียวในการย้ายข้อความจากตำแหน่งหนึ่งไปอีกตำแหน่งหนึ่ง แต่ใน editor จริงจะถูกจัดการเป็นสองงานที่แยกจากกัน
ข้อบกพร่องสามประการของการตัดแบบเดิม
-
Undo ไม่สามารถกู้คืน clipboard ได้
- หลังตัดข้อความ หากกด
Ctrl+ZหรือCommand+Zข้อความในเอกสารจะถูกกู้คืน แต่ เนื้อหาใน clipboard ที่ถูกเขียนทับจะไม่กลับมา - แม้จะใช้ clipboard manager ก็ไม่ได้แปลว่าย้อนการเปลี่ยนแปลงทั้งหมดที่เกิดจากการกดปุ่มเดียวได้อย่างสมบูรณ์
- หลังตัดข้อความ หากกด
-
การลบต้นฉบับทำให้เอกสารถูกจัดวางใหม่ทันที
- ทันทีที่ตัดข้อความ เนื้อหาที่เหลือจะถูกดึงเข้ามา และบรรทัดกับตำแหน่งในเอกสารจะถูกจัดวางใหม่
- การตัด/วางส่วนใหญ่มีเป้าหมายเพื่อย้ายข้อความ แต่หน้าจอกลับเปลี่ยนไปก่อนที่จะหาจุดวาง ทำให้ต้องค้นหาตำแหน่งใหม่
- ภาระนี้อาจไม่มาก แต่ทำให้เกิด ต้นทุนทางการรับรู้ ที่ไม่จำเป็น
-
การย้ายไม่ได้ถูกจัดการเป็นงาน atomic
- หาก Undo การวาง จะลบเฉพาะข้อความที่แทรกในตำแหน่งใหม่ และต้อง Undo อีกครั้งเพื่อกู้คืนกลับตำแหน่งเดิม
- หากมีการแก้ไขอื่นระหว่างการตัดกับการวาง เช่น การสร้างย่อหน้าใหม่ ต้องย้อนงานเหล่านั้นทีละขั้นก่อน จึงจะกู้คืนการตัดเดิมได้
- ในเชิงแนวคิดคือการย้ายข้อความครั้งเดียว แต่ในประวัติการแก้ไขกลับถูกแยกเป็นหลายขั้น
วิธีการทำงานของ Ghost Cut
- ใน Ishmael เมื่อกด
Ctrl+Xข้อความที่เลือกจะจางลงและอยู่ใน สถานะไม่ active แต่ยังคงอยู่ในเอกสาร- พื้นที่ดังกล่าวคลิกไม่ได้ และเคอร์เซอร์จะข้ามไป
- ณ จุดนี้จะยังไม่มีอะไรถูกบันทึกลง clipboard และยังไม่มีงานให้ยกเลิก
- หากกด
Escapeข้อความจะกลับสู่สถานะที่แก้ไขได้อีกครั้ง
- เมื่อกด
Ctrl+VหรือCommand+Vจะลบพื้นที่ที่จางลงออกจากตำแหน่งเดิมและย้ายไปยังตำแหน่งเคอร์เซอร์ปัจจุบัน- การย้ายทั้งหมดเป็น งาน atomic งานเดียว จึงย้อนกลับได้ด้วยการ Undo เพียงครั้งเดียว
- คล้ายกับวิธีที่ Excel แสดงเซลล์ที่ถูกตัดให้จางลง แต่ใน text editor แทบไม่พบวิธีแบบเดียวกัน
- หากต้องการพฤติกรรมการตัดแบบเดิม ต้องคัดลอกด้วย
Ctrl+CหรือCommand+Cแล้วลบต้นฉบับด้วยBackspace - code editor มีปัญหา reflow ของเอกสารน้อยกว่า จึงมีความจำเป็นค่อนข้างต่ำ แต่ถ้ามีให้ใช้ใน VSCode ก็น่าเปิดใช้งาน
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
อยากให้ไม่ไปรบกวน การเลือก/วางของ X11 ตอนนี้ถ้าจะใช้แบบเดิม ต้องลุ้นทุกครั้งว่าต้องกด Shift หรือไม่
วิธี
เลือก → Ctrl+C → คลิก → Ctrl+Vที่บังคับให้ใช้ทั้งเมาส์และคีย์บอร์ดในการคัดลอกและวางนั้นป่าเถื่อน และแอปสมัยใหม่กำลังทำลายสิ่งที่ X11 เคยทำไว้ถูกต้องแล้วการตัดและวางประกอบด้วยสามการกระทำ โดยการตัดประกอบด้วยการคัดลอกและการลบ การ undo ไม่ได้ย้อนการคัดลอกฉันใด ก็ไม่ควรย้อนเนื้อหาในคลิปบอร์ดของการตัดฉันนั้น และผมใช้วิธีตัดแล้ว undo จากนั้นวางหลายครั้งอยู่ทุกวัน
สงสัยว่าใน Ghost Cut ถ้าวางหลายครั้งควรได้อะไรออกมา, เพื่อ rollback แล้วตัวแก้ไขต้องอ่านคลิปบอร์ดทั้งที่ยังไม่ได้วางหรือไม่, และถ้ามี secret key อยู่ จะถูกเปิดเผยให้ส่วนขยายอย่าง Copilot หรือไม่
การตัดใน file explorer จริง ๆ แล้วคือ การย้าย ที่ระบุจุดต้นทางและปลายทางตามลำดับ ไม่มีคลิปบอร์ดของระบบไฟล์ และแทบไม่มีกรณีต้องวางในหลายตำแหน่ง ไม่ได้บอกว่า semantics ที่เสนอนั้นแย่ แต่ฟีเจอร์แยกต่างหากที่ใช้คีย์ลัดอีกชุด ทำให้ข้อความจางลงแล้วจึงย้ายแบบ atomic น่าจะสะอาดกว่า
การ undo การตัดแต่ไม่ย้อน side effect เป็นข้อบกพร่องโดยพื้นฐาน และ undo ควรกู้ระบบกลับสู่สถานะก่อนหน้า ไม่ใช่ถอยหลังแค่บางขั้นตามเงื่อนไข
⌘+Cแล้วไปที่ปลายทางใช้⌘+⌥+Vเพื่อย้าย หรือ⌘+Vเพื่อคัดลอก ถึงถูกวิจารณ์ เพราะเป็นการตัดสินใจการกระทำที่ปลายทาง จึงเป็นธรรมชาติที่สุดWindows ก็ทำให้ไฟล์ที่ถูกตัดดูจางลงและย้ายเมื่อวาง เพื่อป้องกันไฟล์สูญหาย แต่ UX ดี ๆ แบบนี้กลับไม่ได้รับการยอมรับมากพอ
Ghost Cut แทบจะเหมือนการตัด/วางของ Excel และอาจไม่ใช้คลิปบอร์ดเลยก็ได้ ซอฟต์แวร์ทั่วไปมองว่านี่คือการคัดลอก·วางที่เพิ่มการลบเข้าไป แต่ผู้เขียนและ Excel มองว่าเป็นการย้ายเนื้อหาภายในเอกสาร
Ghost Cut มีข้อจำกัดว่าปลายทางต้องมีเพียงหนึ่งเดียวและต้องอยู่ในโปรแกรมหรือเอกสารเดียวกัน ถึงอย่างนั้น ถ้าการตัดแบบเดิมสุดท้ายก็เป็นเพียงรูปแบบหนึ่งของการคัดลอก·วาง ก็สามารถทำผลลัพธ์เดียวกันด้วย
คัดลอกแล้ว Backspaceได้ ดังนั้นการเปลี่ยนเป็น Ghost Cut ก็ดูไม่ได้สูญเสียอะไรมากUX ของการตัดแบบพื้นฐานไม่ตรงกับ mental model ส่วนตัว ของผู้เขียน ไม่ใช่ข้อบกพร่อง ถ้าตัดผิดโดยไม่ได้ตั้งใจ ส่วนใหญ่ก็คงตั้งใจจะคัดลอก ดังนั้นการออกแบบให้ข้อความยังคงอยู่ในคลิปบอร์ดจึงสมเหตุสมผล
คนส่วนใหญ่เข้าใจ undo ว่าเป็นการยกเลิกการเปลี่ยนแปลงของไฟล์ ไม่ได้มองว่าเป็นการย้อนทั้งสถานะของไฟล์และระบบปฏิบัติการ การตัดที่ตั้งค่าได้ก็น่าพิจารณา แต่เป็นทางเลือกที่เหมาะกับผู้ใช้ส่วนน้อยมากกว่าคนส่วนใหญ่
การตัดคือการ ย้ายข้อความจากแอปไปยังคลิปบอร์ด ซึ่งเป็นแอปพลิเคชันแยกต่างหาก เหมือนที่เราไม่คาดว่าเมื่อแก้ไขแอป A แล้ว undo ในแอป B จะทำให้ A เปลี่ยนกลับไปด้วย ก็ไม่คาดว่า undo จะกระทบคลิปบอร์ด
Ghost Cut คล้ายกับ Excel และด้วยเหตุนี้จึงทำให้สับสนอยู่บ่อย ๆ ใน Excel บางครั้งเมื่อคัดลอกเซลล์แล้วแก้ไข จากนั้นจะวาง กลับพบว่าสิ่งที่คัดลอกไม่ใช่ค่าจริง แต่เป็นการอ้างอิงช่วงที่เลือก และเมื่อช่วงนั้นเปลี่ยนหรือถูก undo ก็วางอะไรไม่ได้เลย
ถ้าออกแบบตั้งแต่ต้น คำวิจารณ์ต่อการตัด/วางในปัจจุบันก็สมเหตุสมผล แต่การตัดและวางเป็นสองการกระทำ ดังนั้นข้ออ้างว่าควร undo ทั้งสองอย่างด้วยการ undo ครั้งเดียวจึงฟังดูแปลก
คล้ายกับ ตัวเลือกแบบ RISC/CISC ว่าคำสั่งคือ
CUTANDPASTEคำสั่งเดียว หรือเป็นCUTกับPASTEสองคำสั่งไม่ควรเปลี่ยนพฤติกรรมที่ผู้ใช้คาดหวัง Excel ทำคล้าย ๆ กัน แต่เพราะไม่ได้เป็นไปตามที่ต้องการจึงไม่สะดวกมาก
การตัดควรใส่ลงคลิปบอร์ดทันทีเพื่อให้วางในโปรแกรมอื่นได้ด้วย และไม่คุ้มที่จะทำลายความคาดหวังและ flow ปกติของผู้ใช้ส่วนใหญ่เพื่อปรับปรุงให้คนส่วนน้อย
หาก
Ctrl+Xไม่แตะคลิปบอร์ด ก็จะวางในโปรแกรมอื่นไม่ได้ด้วย ประโยชน์ที่ได้เล็กเกินไปเมื่อเทียบกับปัญหาที่เกิดขึ้นเมื่อหลุดจาก flow ในอุดมคติมุมมองแบบนี้จะคิดก็ได้ แต่เห็นด้วยยากกว่า อยากให้แก้ การดักคัดลอก ก่อนดีกว่า คือเวลาตั้งใจจะคัดลอกรายการที่เลือก แต่เว็บหรือแอปกลับ “ช่วย” ใส่เนื้อหาอื่นที่ต่างไปอย่างสิ้นเชิง
เวลา copy URL ก็ไม่อยากให้เบราว์เซอร์เติม
https://เองตามใจWindows Explorer ก็ทำงานคล้ายกันเมื่อ cut ไฟล์ แต่ก็ บันทึกลงคลิปบอร์ดด้วย
Ghost Cut ก็แค่พังในแบบที่ต่างจากพฤติกรรมเดิม แต่ตรงกับรสนิยมของผู้เขียน ถึงอย่างนั้นก็เป็นแนวคิดที่น่าสนใจ ทำให้ลองคิดว่าถ้า cut/paste ไม่ได้ถูกสร้างเป็นฟังก์ชันทั้งระบบและข้ามแอป แอปต่าง ๆ อาจพัฒนาไปอย่างไร
คิดว่าน่าจะไม่ชอบวิธีนี้ แอปที่ทำงานคล้ายกันอย่าง Excel เป็นแอปที่เกลียดที่สุดสำหรับการตัด·คัดลอก·วาง
การตัดโดยมากเป็นการย้ายแบบ atomic ที่จบด้วยการวางครั้งเดียว ดังนั้นการอ้างอิงที่เกี่ยวข้องทั้งหมดจะถูกอัปเดต ไม่ว่าจะอยู่ในหรือนอกช่วงที่ย้าย และไม่ว่าจะเป็น relative หรือ absolute reference ก็ตาม นี่คือเหตุผลที่หลังวางแล้วเครื่องหมายแสดงผลหายไปและวางซ้ำไม่ได้
ในทางกลับกัน เมื่อคัดลอก จะอัปเดตเฉพาะ relative reference ระหว่างเซลล์ที่ถูกคัดลอก ส่วน absolute reference หรือ reference ของเซลล์ที่ไม่ได้ถูกคัดลอกจะไม่เปลี่ยน และสามารถวางได้หลายครั้ง เมื่อพิจารณาถึง range reference ด้วย แค่มันทำงานได้ตามคาดแบบนี้ก็น่าทึ่งแล้ว และข้อจำกัดที่ว่าถ้าแก้ไขพื้นที่ต้นฉบับแล้วงานจะถูกยกเลิกก็เข้าใจได้ ดังนั้นใน Excel การคัดลอกแล้วลบจึงเป็นการกระทำที่ต่างจากการตัด
ควรรักษาการตัดแบบพื้นฐานไว้ แล้วกำหนดการย้ายแบบพิเศษให้
Ctrl+Shift++