- Cách cắt và dán thông thường chia việc di chuyển văn bản thành hai thao tác, khiến không thể hoàn tác trọn vẹn và còn làm thay đổi luồng tài liệu một cách không cần thiết
- Dù hủy thao tác cắt, nội dung clipboard đã bị ghi đè cũng không được khôi phục; ngay cả khi dùng trình quản lý clipboard, bạn cũng không thể hoàn tác toàn bộ thay đổi do một lần nhấn phím tạo ra
- Vì văn bản biến mất ngay lập tức và tài liệu bị reflow, bạn phải tìm lại vị trí cần dán; để hủy toàn bộ thao tác di chuyển, cần ít nhất hai lần hoàn tác
- Ghost Cut của Ishmael, một trình biên tập tiểu thuyết, dùng
Ctrl+Xđể làm mờ và vô hiệu hóa vùng được chọn, rồi khi dán sẽ xóa nó khỏi vị trí ban đầu và chuyển sang vị trí mới như một thao tác nguyên tử duy nhất - Ghost Cut không ghi đè clipboard và có thể hoàn tác toàn bộ thao tác di chuyển chỉ trong một lần, nhưng nếu muốn chỉ cắt theo cách truyền thống thì cần sao chép rồi nhấn
Backspace
Cách hoạt động của cắt/dán truyền thống
- Cắt/dán là sự kết hợp của cắt, tức xóa văn bản được chọn khỏi tài liệu và đưa vào clipboard, và dán, tức chèn nó vào vị trí khác
- Dù được hiểu như một thao tác duy nhất để chuyển văn bản từ vị trí này sang vị trí khác, trong các trình biên tập thực tế nó được xử lý như hai thao tác tách biệt
Ba khiếm khuyết của thao tác cắt truyền thống
-
Hoàn tác không thể khôi phục clipboard
- Sau khi cắt, nếu nhấn
Ctrl+ZhoặcCommand+Z, văn bản trong tài liệu được khôi phục, nhưng nội dung clipboard đã bị ghi đè thì không quay lại - Ngay cả khi dùng trình quản lý clipboard, điều đó cũng không hoàn tác sạch sẽ mọi thay đổi do một lần nhấn phím tạo ra
- Sau khi cắt, nếu nhấn
-
Xóa văn bản gốc khiến tài liệu lập tức được sắp xếp lại
- Ngay khi cắt văn bản, phần nội dung còn lại bị kéo lên và các dòng cũng như vị trí trong tài liệu được bố trí lại
- Phần lớn thao tác cắt/dán nhằm mục đích di chuyển văn bản, nhưng màn hình đã thay đổi trước cả khi bạn tìm được điểm cần dán, nên phải tìm lại vị trí
- Gánh nặng này có thể nhỏ, nhưng nó tạo ra chi phí nhận thức không cần thiết
-
Việc di chuyển không được xử lý như một thao tác nguyên tử
- Nếu hoàn tác thao tác dán, chỉ văn bản được chèn ở vị trí mới bị xóa; để khôi phục về vị trí ban đầu, cần hoàn tác thêm một lần nữa
- Nếu giữa thao tác cắt và dán có chỉnh sửa khác như tạo đoạn văn mới, bạn phải hoàn tác lần lượt từ thao tác đó mới khôi phục được đến thao tác cắt ban đầu
- Về mặt khái niệm đây là một lần di chuyển văn bản, nhưng trong lịch sử chỉnh sửa nó bị tách thành nhiều bước
Cách Ghost Cut hoạt động
- Trong Ishmael, khi nhấn
Ctrl+X, văn bản được chọn sẽ mờ đi và trở thành trạng thái vô hiệu hóa, nhưng vẫn nằm nguyên trong tài liệu- Không thể nhấp vào vùng đó và con trỏ cũng bỏ qua nó
- Tại thời điểm này, không có gì được lưu vào clipboard và cũng không tạo ra thao tác nào để hoàn tác
- Nhấn
Escapesẽ khôi phục văn bản về trạng thái có thể chỉnh sửa
- Khi nhấn
Ctrl+VhoặcCommand+V, vùng đã bị làm mờ sẽ bị xóa khỏi vị trí ban đầu và được chuyển đến vị trí con trỏ hiện tại- Toàn bộ thao tác di chuyển là một thao tác nguyên tử duy nhất, nên có thể hoàn tác bằng một lần
- Cách này giống cách Excel làm mờ các ô đã cắt, nhưng trong trình biên tập văn bản thì khó tìm thấy phương thức tương tự
- Nếu cần hành vi cắt truyền thống, bạn phải sao chép bằng
Ctrl+ChoặcCommand+Crồi xóa văn bản gốc bằngBackspace - Với trình biên tập mã, vấn đề reflow tài liệu ít hơn nên nhu cầu tương đối thấp, nhưng nếu VSCode cung cấp tính năng này thì cũng đáng bật để dùng
1 bình luận
Ý kiến trên Hacker News
Mong là đừng cản trở cơ chế chọn/dán của X11. Giờ muốn dùng như trước đây thì lần nào cũng phải phó mặc may rủi xem có cần nhấn Shift hay không.
Cách
chọn → Ctrl+C → nhấp → Ctrl+V, bắt dùng cả chuột lẫn bàn phím để sao chép và dán, thật man rợ; những thứ X11 đã triển khai đúng đang bị các ứng dụng hiện đại làm hỏng.Cắt và dán gồm ba thao tác: cắt bao gồm sao chép và xóa. Cũng như hoàn tác không đảo ngược việc sao chép, nội dung clipboard của thao tác cắt cũng không nên bị đảo ngược; tôi dùng hằng ngày kiểu cắt, hoàn tác rồi dán nhiều lần.
Tôi thắc mắc nếu dán nhiều lần trong Ghost Cut thì sẽ ra cái gì; để rollback, trình soạn thảo có phải đọc clipboard dù chưa dán hay không; và nếu trong đó có khóa bí mật thì liệu có bị lộ cho các tiện ích mở rộng như Copilot không.
Cắt trong trình quản lý tệp thực ra là di chuyển, tức lần lượt chỉ định nguồn và đích; cũng không có clipboard hệ thống tệp, và hiếm khi dán vào nhiều vị trí. Không phải ngữ nghĩa được đề xuất là tệ, nhưng sẽ gọn hơn nếu đó là một tính năng độc lập với phím tắt riêng: làm mờ văn bản rồi di chuyển một cách nguyên tử.
Hoàn tác thao tác cắt mà không đảo ngược tác dụng phụ là một khiếm khuyết căn bản; hoàn tác phải khôi phục hệ thống về trạng thái trước đó, chứ không phải tùy điều kiện mà chỉ lùi vài bước.
⌘+C, rồi ở đích dùng⌘+⌥+Vđể di chuyển hoặc⌘+Vđể sao chép—lại bị chỉ trích. Vì quyết định thao tác ở đích nên đó là cách trực quan nhất.Windows cũng làm mờ tệp đã cắt và chỉ di chuyển khi dán để tránh mất tệp, nhưng trải nghiệm người dùng tốt như vậy chưa được công nhận đủ.
Ghost Cut gần giống cắt/dán trong Excel, và thậm chí có thể không dùng clipboard. Phần mềm thông thường xem nó là sao chép/dán kèm thêm xóa, còn tác giả và Excel xem đó là di chuyển nội dung bên trong tài liệu.
Ghost Cut có ràng buộc là chỉ có đúng một đích và phải nằm trong cùng chương trình hoặc tài liệu. Dù vậy, nếu thao tác cắt hiện tại rốt cuộc chỉ là một biến thể của sao chép/dán, thì có thể đạt cùng hiệu quả bằng
sao chép rồi Backspace, nên chuyển sang Ghost Cut có vẻ cũng không mất mát nhiều.Trải nghiệm người dùng của cắt mặc định chỉ là không khớp với mô hình tinh thần cá nhân của tác giả, chứ không phải lỗi. Nếu lỡ cắt nhầm thì thường là vì định sao chép, nên thiết kế để văn bản vẫn còn trong clipboard là hợp lý.
Đa số hiểu hoàn tác là hoàn tác thay đổi trong tệp, chứ không phải khôi phục cả trạng thái của tệp lẫn hệ điều hành. Cắt có thể cấu hình là điều đáng cân nhắc, nhưng đây giống một phương án phù hợp với số ít người dùng hơn là đa số.
Cắt là thao tác di chuyển văn bản từ ứng dụng sang clipboard, vốn là một ứng dụng riêng. Cũng như tôi không kỳ vọng hoàn tác trong ứng dụng B sẽ thay đổi cả ứng dụng A sau khi đã sửa A, tôi không kỳ vọng hoàn tác ảnh hưởng đến clipboard.
Ghost Cut giống Excel, và vì vậy tôi thường bị bối rối. Trong Excel, có lúc tôi sao chép ô, chỉnh sửa rồi định dán thì phát hiện thao tác sao chép không phải là giá trị thật mà là tham chiếu vùng chọn; vùng đó đã thay đổi hoặc bị hoàn tác nên không dán được gì.
Nếu thiết kế từ đầu, phê bình đối với cắt/dán hiện tại là hợp lý. Tuy nhiên, cắt và dán là hai thao tác, nên lập luận rằng một lần hoàn tác phải hoàn tác cả hai nghe hơi gượng.
Nó giống một lựa chọn kiểu RISC/CISC: hỏi lệnh là một
CUTANDPASTEhay là hai lệnhCUTvàPASTE.Không nên thay đổi hành vi được kỳ vọng. Excel hoạt động tương tự, nhưng rất bất tiện vì không làm đúng theo cách tôi muốn.
Cắt phải đưa ngay vào clipboard để có thể dán sang chương trình khác; không đáng phá vỡ kỳ vọng và luồng làm việc bình thường của đa số người dùng chỉ để cải thiện cho thiểu số.
Nếu
Ctrl+Xkhông đụng đến clipboard thì cũng không thể dán sang chương trình khác. Lợi ích quá nhỏ so với các rắc rối nảy sinh khi rời khỏi luồng lý tưởng.Quan điểm này thì tùy, nhưng tôi khó đồng ý. Thà trước hết xử lý việc chặn thao tác sao chép, khi trang web hoặc ứng dụng tự cho là đang giúp mà lại đưa nội dung hoàn toàn khác vào clipboard, còn hơn.
Tôi cũng không muốn trình duyệt tự ý thêm
https://khi sao chép URL.Windows Explorer cũng hoạt động gần giống vậy khi cắt tệp, nhưng vẫn ghi vào clipboard.
Ghost Cut cũng chỉ là hỏng theo một cách khác với hành vi hiện tại, nhưng hợp gu tác giả. Dù vậy, đây là một ý tưởng thú vị khiến ta tự hỏi các ứng dụng khác đã phát triển ra sao nếu cắt/dán không được xây dựng thành chức năng toàn hệ thống và liên ứng dụng.
Có lẽ tôi sẽ không thích cách này. Excel là ứng dụng tôi ghét nhất về cắt, sao chép và dán, mà nó lại hoạt động tương tự.
Cắt thường là một thao tác di chuyển nguyên tử kết thúc bằng một lần dán, nên mọi tham chiếu liên quan đều được cập nhật, bất kể nằm trong hay ngoài vùng di chuyển và bất kể là tham chiếu tương đối hay tuyệt đối. Việc dấu hiệu biến mất sau khi dán khiến không thể dán lần hai cũng là vì vậy.
Ngược lại, khi sao chép, chỉ các tham chiếu tương đối giữa các ô được sao chép mới được cập nhật; tham chiếu tuyệt đối hoặc tham chiếu từ ô không được sao chép thì không đổi, và có thể dán nhiều lần. Nếu xét cả tham chiếu vùng, việc nó hoạt động đúng như mong đợi như vậy đã là đáng kinh ngạc; ràng buộc rằng thao tác bị hủy nếu sửa vùng gốc cũng có thể hiểu được. Vì thế, trong Excel, sao chép rồi xóa là thao tác khác với cắt.
Đáng lẽ nên giữ cắt mặc định và gán thao tác di chuyển đặc biệt cho
Ctrl+Shift++.