1 poin oleh GN⁺ 5 jam lalu | 1 komentar | Bagikan ke WhatsApp
  • Cut dan paste biasa memecah pemindahan teks menjadi dua operasi sehingga tidak mungkin di-undo sepenuhnya dan bahkan mengubah alur dokumen secara tidak perlu
  • Bahkan jika cut dibatalkan, isi clipboard yang tertimpa tidak dipulihkan, dan meski memakai clipboard manager, seluruh perubahan dari satu penekanan tombol tetap tidak bisa dibalik sebagai satu kesatuan
  • Karena teks langsung menghilang, dokumen mengalami reflow, sehingga kita harus mencari lagi lokasi untuk paste; untuk membatalkan seluruh perpindahan, setidaknya diperlukan dua kali undo
  • Ghost Cut di editor novel Ishmael menjalankan satu operasi atomik: dengan Ctrl+X, area terpilih dibuat redup dan dinonaktifkan, lalu saat dipaste, area itu dihapus dari posisi asli dan dipindahkan ke posisi baru
  • Ghost Cut tidak menimpa clipboard dan memungkinkan seluruh perpindahan dibatalkan sekaligus, tetapi jika ingin hanya melakukan cut dengan cara lama, kita harus menyalin lalu menekan Backspace

Cara kerja cut/paste yang ada saat ini

  • Cut/paste adalah gabungan dari cut, yang menghapus teks terpilih dari dokumen dan menaruhnya ke clipboard, dan paste, yang menyisipkannya di lokasi lain
  • Ini terasa seperti satu operasi untuk memindahkan teks dari satu tempat ke tempat lain, tetapi di editor sebenarnya diproses sebagai dua operasi yang terpisah

Tiga kelemahan pada cut yang ada saat ini

  • Undo tidak bisa memulihkan clipboard

    • Setelah cut, menekan Ctrl+Z atau Command+Z memang memulihkan teks di dokumen, tetapi isi clipboard yang tertimpa tidak kembali
    • Bahkan jika memakai clipboard manager, itu tetap bukan pembalikan yang bersih atas semua perubahan yang dibuat oleh satu penekanan tombol
  • Menghapus teks asli langsung menata ulang dokumen

    • Saat teks dipotong, sisa konten langsung tertarik dan baris serta posisi dalam dokumen ditata ulang
    • Sebagian besar cut/paste bertujuan memindahkan teks, tetapi bahkan sebelum menemukan titik paste, tampilan sudah berubah sehingga posisi harus dicari lagi
    • Bebannya mungkin kecil, tetapi tetap menimbulkan biaya kognitif yang tidak perlu
  • Perpindahan tidak diperlakukan sebagai operasi atomik

    • Jika paste di-undo, hanya teks yang disisipkan di lokasi baru yang dihapus; untuk memulihkannya ke lokasi asli, undo harus dilakukan sekali lagi
    • Jika di antara cut dan paste ada pengeditan lain, seperti membuat paragraf baru, semua langkah itu harus dibatalkan satu per satu sebelum cut semula bisa dipulihkan
    • Secara konseptual ini adalah satu perpindahan teks, tetapi dalam riwayat pengeditan ia terpecah menjadi beberapa langkah

Cara kerja Ghost Cut

  • Saat menekan Ctrl+X di Ishmael, teks yang dipilih menjadi redup dan nonaktif, tetapi tetap berada di dalam dokumen
    • Area itu tidak bisa diklik, dan kursor juga akan melewatinya
    • Pada tahap ini, tidak ada apa pun yang disimpan ke clipboard, dan belum ada operasi yang bisa di-undo
    • Menekan Escape akan memulihkan teks agar bisa diedit lagi
  • Saat menekan Ctrl+V atau Command+V, area yang diredupkan akan dihapus dari posisi aslinya lalu dipindahkan ke posisi kursor saat ini
    • Seluruh perpindahan menjadi satu operasi atomik, sehingga bisa dibatalkan dengan satu kali undo
    • Ini mirip dengan cara Excel menampilkan sel yang dipotong dalam keadaan redup, tetapi pendekatan yang sama jarang terlihat di editor teks
  • Jika membutuhkan perilaku cut tradisional, gunakan Ctrl+C atau Command+C untuk menyalin lalu hapus teks asli dengan Backspace
  • Editor kode relatif kurang membutuhkan ini karena masalah reflow dokumen lebih kecil, tetapi jika tersedia di VSCode, fitur ini layak diaktifkan dan dipakai

1 komentar

 
GN⁺ 5 jam lalu
Komentar Hacker News
  • Semoga jangan merusak seleksi/tempel X11. Sekarang, kalau mau memakainya seperti dulu, rasanya harus menebak-nebak setiap kali apakah perlu menekan Shift
    Pola pilih → Ctrl+C → klik → Ctrl+V yang memaksa kita memakai mouse dan keyboard untuk menyalin dan menempel itu barbar, dan aplikasi modern sedang merusak hal yang sudah diimplementasikan dengan benar oleh X11

  • Potong dan tempel adalah tiga tindakan; potong terdiri dari salin dan hapus. Seperti undo tidak membatalkan salin, isi clipboard dari potong juga tidak semestinya dibatalkan, dan saya setiap hari memakai alur potong, undo, lalu tempel berkali-kali
    Dengan Ghost Cut, saya bertanya-tanya apa yang harus muncul jika ditempel berkali-kali, apakah editor harus membaca clipboard meski belum menempel hanya demi rollback, dan jika ada kunci rahasia di dalamnya, apakah itu akan terekspos ke ekstensi seperti Copilot
    Potong di penjelajah berkas pada dasarnya adalah pindah dengan menentukan sumber lalu tujuan secara berurutan; juga tidak ada clipboard sistem berkas, dan jarang perlu menempel ke banyak lokasi. Bukan berarti semantik yang diusulkan buruk, tetapi akan lebih rapi jika ini menjadi fitur terpisah dengan shortcut sendiri untuk meredupkan teks lalu memindahkannya secara atomik

    • Potong dan tempel harus menjadi satu tindakan atomik. Kalau ingin menempel berkali-kali, pakai salin saja
      Membatalkan potong sambil tidak mengembalikan efek sampingnya adalah cacat mendasar, dan undo seharusnya memulihkan sistem ke keadaan sebelumnya, bukan mundur beberapa langkah saja tergantung kondisi
    • Mengusulkan fitur pindah atomik yang nyaman untuk editor teks itu masuk akal, tetapi secara pribadi saya tidak terlalu membutuhkannya
    • Cara meredupkan teks lalu memindahkannya ke lokasi yang diinginkan pada dasarnya sama dengan drag and drop di macOS
    • Saya tidak paham kenapa alur di macOS Finder, menyalin file dengan ⌘+C lalu di tujuan memakai ⌘+⌥+V untuk memindahkan atau ⌘+V untuk menyalin, dianggap layak dikritik. Menentukan tindakannya di tujuan justru paling intuitif
      Windows juga meredupkan file yang dipotong dan memindahkannya saat ditempel untuk mencegah kehilangan file, tetapi pengalaman pengguna sebaik ini kurang dihargai
    • Kalau menempelkannya berkali-kali, bukankah sebenarnya yang diinginkan adalah menyalin? Tidak ada model mental yang mutlak benar; jika potong adalah salin lalu hapus, ya salin lalu hapus sendiri saja, dan di Vim atau Emacs cukup hapus saja
  • Ghost Cut hampir sama dengan potong/tempel di Excel, dan mungkin sama sekali tidak memakai clipboard. Perangkat lunak umum melihat ini sebagai salin-tempel dengan tambahan hapus, tetapi penulis dan Excel melihatnya sebagai memindahkan konten di dalam dokumen
    Ghost Cut punya batasan bahwa tujuannya harus tepat satu dan harus berada dalam program atau dokumen yang sama. Meski begitu, kalau potong yang ada sekarang pada akhirnya cuma variasi dari salin-tempel, efek yang sama bisa dicapai dengan salin lalu Backspace, jadi tampaknya tidak banyak yang hilang jika diganti dengan Ghost Cut

    • Di IDE, saya sering memakai potong tanpa seleksi dengan menaruh kursor di mana saja pada satu baris untuk menghapus seluruh baris. Shortcut-nya enak ditekan dengan tangan kiri, dan Ghost Cut merusak kegunaan ini
  • UX potong bawaan bukan cacat; hanya saja tidak cocok dengan model mental pribadi penulis. Jika tanpa sengaja memotong, biasanya yang sebenarnya ingin dilakukan adalah menyalin, jadi masuk akal kalau teks tetap ada di clipboard
    Kebanyakan orang memahami undo sebagai pembatalan perubahan file, bukan sebagai pengembalian bersamaan atas keadaan file dan sistem operasi. Potong yang bisa dikonfigurasi layak dipertimbangkan, tetapi lebih merupakan alternatif untuk minoritas daripada mayoritas pengguna

    • Saya juga tidak menganggap perilaku itu cacat, tetapi tetap menghargai bahwa kelemahannya dibahas dan alternatif diajukan. Saya cukup sering memanfaatkan perilaku mempertahankan clipboard: memotong sesuatu ke clipboard, membatalkan hanya perubahannya, lalu memakai isi itu
    • Saya lebih suka alur memotong atau menyalin teks, lalu undo beberapa langkah, lalu menempelkannya ke lokasi baru. Dengan usulan ini, akan ada langkah perantara tambahan, seperti harus menempelkannya ke file sementara sebelum undo
  • Potong adalah tindakan memindahkan teks ke clipboard, yang bagi aplikasi merupakan aplikasi terpisah. Seperti kita tidak berharap undo di aplikasi B ikut mengubah aplikasi A setelah mengedit A, saya juga tidak berharap undo memengaruhi clipboard
    Ghost Cut mirip Excel, dan justru karena itu sering membuat saya kesal. Di Excel, setelah menyalin sel lalu mengedit sesuatu dan mencoba menempel, kadang ternyata yang disalin bukan nilai sebenarnya melainkan referensi ke area terpilih, dan ketika area itu berubah atau terkena undo, akhirnya tidak bisa menempel apa pun

  • Jika dirancang dari nol, kritik terhadap potong/tempel saat ini itu masuk akal. Namun, karena potong dan tempel adalah dua tindakan, klaim bahwa satu kali undo harus membatalkan keduanya terasa janggal
    Ini mirip pilihan gaya RISC/CISC: apakah perintahnya satu CUTANDPASTE atau dua perintah CUT dan PASTE

  • Jangan ubah perilaku yang sudah diharapkan. Excel bertindak mirip, dan justru sangat menjengkelkan karena tidak berjalan seperti yang diinginkan
    Potong harus langsung masuk ke clipboard supaya bisa ditempel juga di program lain; tidak layak merusak ekspektasi dan alur normal mayoritas pengguna demi perbaikan bagi segelintir orang

    • Apakah teks yang belum ditempel akan terus tetap redup, dan jika menyalin teks baru di aplikasi lain, mana yang akan ditempel: teks yang diredupkan atau isi clipboard baru? Kasus tepi jadi terlalu banyak
      Kalau Ctrl+X tidak menyentuh clipboard, kita juga tidak bisa menempelkannya ke program lain. Dibanding manfaatnya, kerepotan saat keluar dari alur ideal terlalu besar
  • Sudut pandang seperti ini sah saja, tetapi sulit disetujui. Kalau bisa, lebih baik bereskan dulu pembajakan salinan ketika situs atau aplikasi mengaku membantu saat kita menyalin item terpilih tetapi malah memasukkan isi yang sama sekali lain
    Saat menyalin URL, saya juga tidak mau browser sembarangan menambahkan https://

  • Windows Explorer juga bertindak mirip seperti ini saat memotong file, tetapi tetap mencatatnya di clipboard
    Ghost Cut juga tetap rusak, hanya saja rusaknya berbeda dari perilaku lama dan sesuai selera penulis. Meski begitu, ini tetap gagasan menarik yang membuat saya membayangkan bagaimana aplikasi lain akan berkembang kalau potong/tempel sejak awal tidak dibuat sebagai fitur lintas sistem dan lintas aplikasi

  • Sepertinya saya tidak akan suka cara ini. Excel yang berperilaku mirip sudah menjadi aplikasi yang paling saya benci untuk potong, salin, dan tempel

    • Menurut saya, terlepas dari beberapa kekurangan, Excel dirancang sangat baik untuk mayoritas pengguna. Ada bukan hanya isi sel tetapi juga referensi sel, sehingga potong dan salin memang bekerja sedikit berbeda
      Potong biasanya merupakan pemindahan atomik yang selesai dengan satu kali tempel, jadi semua referensi terkait diperbarui, baik di dalam maupun di luar area yang dipindah, dan terlepas dari apakah referensinya relatif atau absolut. Karena itu juga, setelah ditempel indikatornya hilang sehingga tidak bisa ditempel dua kali
      Sebaliknya, saat menyalin, hanya referensi relatif di antara sel yang disalin yang diperbarui; referensi absolut atau referensi dari sel yang tidak ikut disalin tidak berubah, dan hasilnya bisa ditempel berkali-kali. Kalau mempertimbangkan sampai referensi rentang, fakta bahwa ini bisa bekerja sesuai ekspektasi saja sudah mengagumkan, dan batasan bahwa operasi dibatalkan jika area asli diubah juga cukup bisa dipahami. Jadi di Excel, salin lalu hapus memang berbeda dari potong
    • Excel terasa seperti selalu memilih cara salin, potong, dan tempel yang paling buruk sesuai niat saya saat itu. Mungkin sebenarnya tidak begitu, tetapi secara pribadi ini sangat tidak intuitif dalam banyak hal
    • Di Excel, saya menyalin dan menempel dulu, baru kemudian menghapus sumbernya. Potong/tempel biasa merusak rumus yang mereferensikan lokasi tempel
      Potong bawaan seharusnya dipertahankan, dan pemindahan khusus ini dialokasikan ke Ctrl+Shift++
    • Sekitar setengah waktunya bahkan tidak benar-benar bekerja