วิธีคัดลอกข้อความโดยไม่สูญเสียการเลือก?


11

เมื่อฉันคัดลอกข้อความที่เลือก ( kill-ring-saveด้วยM-w) ฉันจะสูญเสียสิ่งที่ฉันเลือกโดยอัตโนมัติ ฉันได้ลองใช้ Transient Mark Mode โดยไม่มีโชคแล้ว (โปรดทราบว่าฉันไม่ได้ใช้โหมด CUA)


ตอนแรกฉันคิดว่ามันเกี่ยวกับการเลือก X (ซึ่งในกรณีนี้ตัวแปรselect-active-regionsจะเกี่ยวข้อง) แต่ดูเหมือนว่าจะเน้นเรื่องภูมิภาค
YoungFrog

คำตอบ:


11

ทางออกที่ดีที่สุดคือใช้C-x C-xเพื่อเปิดใช้งานเครื่องหมาย แต่ถ้าคุณต้องการเก็บสิ่งที่เลือกไว้จริงๆคุณสามารถใช้:

(defun copy-keep-highlight (beg end)
  (interactive "r")
  (prog1 (kill-ring-save beg end)
    (setq deactivate-mark nil)))

1
ฉันขอแนะนำให้ใช้คำแนะนำเช่นนี้:(defun yf/no-deactivate-mark (&rest _) (setq deactivate-mark nil)) (advice-addadvice-add 'kill-ring-save :after #'yf/no-deactivate-mark)
YoungFrog

@dangangoliv ขอบคุณ นี่อะไรน่ะprog1?
NVaughan

@ YoungFrog ขอบคุณ แต่รหัสของคุณไม่ทำงานเนื่องจากมีข้อผิดพลาดทางไวยากรณ์อยู่ที่ไหนสักแห่ง
NVaughan

2
อาคัดลอกข้อผิดพลาดวาง: advice-addควรจะมีเพียงครั้งเดียว ฉันไม่สามารถแก้ไขความคิดเห็นได้
YoungFrog

1
@NVaughan นี่เป็นคำอธิบายที่ดี: emacs.stackexchange.com/questions/5829/…
djangoliv
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.