วิธีการกระทำในรูปสี่เหลี่ยมเกินกว่าจุดสิ้นสุดของบรรทัด?


16

นี่คือสิ่งที่เอกสารของ Vim พูดถึงคือ:

การแก้ไขแบบเสมือนหมายความว่าเคอร์เซอร์สามารถวางตำแหน่งในตำแหน่งที่ไม่มีอักขระจริง นี่อาจเป็นครึ่งทางของแท็บหรือเกินกว่าจุดสิ้นสุดของบรรทัด มีประโยชน์สำหรับการเลือกสี่เหลี่ยมในโหมดภาพและการแก้ไขตาราง

ฉันชอบที่จะเห็นสิ่งนี้นำมาใช้เป็นโหมดรองหรือการตั้งค่าในตัว


คุณต้องการสิ่งนี้เพื่อเลือกสี่เหลี่ยมผืนผ้าหรือไม่? หากเป็นกรณีนี้มันเป็นค่าเริ่มต้นในเวอร์ชันการพัฒนาปัจจุบัน
Malabarba

ไม่ฉันกำลังคิดเหมือน yanking / แทนที่รูปสี่เหลี่ยมผืนผ้า ฉันใช้โหมดทำเครื่องหมายสี่เหลี่ยมผืนผ้าและในขณะที่มันเป็นคุณสมบัติที่ดีมันไม่ใช่สิ่งที่ฉันกำลังมองหา
พี่เลี้ยง

อันที่จริงแล้วสำหรับ yanking / แทนที่รูปสี่เหลี่ยมผืนผ้ามันจะเป็นสหายที่เป็นธรรมชาติของการทำงานที่มีอยู่ในโหมดสี่เหลี่ยมผืนผ้าเครื่องหมาย ไม่แน่ใจว่า UI ควรเป็นเช่นไร
สเตฟาน

ขอบคุณสำหรับการตอบกลับสเตฟาน คุณลักษณะนี้จะมีประโยชน์มากที่สุดเมื่อจัดการกับสี่เหลี่ยมดังนั้นในขณะที่อยู่ในโหมดสี่เหลี่ยมผืนผ้าสี่เหลี่ยมคำสั่งสามารถสลับโหมดการแก้ไขเสมือน C-fตอนนี้ในโหมดเครื่องหมายสี่เหลี่ยมรูปลักษณ์ที่จุดชอบมันอยู่ในโหมดแก้ไขเสมือนมันสามารถย้ายที่ผ่านมาท้ายบรรทัดด้วย แต่เมื่อคุณดึงสี่เหลี่ยมหลังจากทำเช่นนี้สี่เหลี่ยมจะปรากฏที่เครื่องหมายแทนที่จะเป็นจุด หากปรากฏ ณ จุดนั้นจะช่วยแก้ปัญหานี้ได้
พี่เลี้ยง

คำตอบ:


10

extend-rectangle-to-endฟังก์ชั่นในrectangle-utilsแพคเกจคือสิ่งที่คุณต้องการ melpaมันอยู่ใน

มันแทรกช่องว่างเพื่อให้การเลือกสี่เหลี่ยมผืนผ้าปัจจุบันขยายเพื่อครอบคลุมบรรทัดที่ยาวที่สุดในภูมิภาค

เพื่อให้ได้พฤติกรรมนี้ฉันได้รับสิ่งนี้ใน init.el ของฉัน C-x r eไม่ผูกพันกับสิ่งอื่นใดในวานิลลา emacs

(require 'rectangle-utils)
(global-set-key (kbd "C-x r e") 'extend-rectangle-to-end)

1
ชี้แจงกับแพคเกจนี้คุณเลือกพื้นที่แล้วทำM-x extend-rectangle-to-endแล้วหรือC-x r M-w C-x r k
Kaushal Modi

18

คำตอบอื่น: M-x picture-modeการใช้งาน คุณสามารถฆ่าหรือคัดลอกสี่เหลี่ยมผืนผ้าผ่านกึ่งกลางของแท็บเป็นต้นส่งไปยังรีจิสเตอร์ ฯลฯ


3
ข้อดีอย่างหนึ่งของการใช้วิธีนี้คือคุณสามารถควบคุมได้ว่าคุณต้องการให้การเลือกรูปสี่เหลี่ยมผืนผ้ากว้างขนาดไหน หากฉันมีบรรทัดที่ 1 ที่มี 30 ตัวอักษรและบรรทัดที่ 2 ที่มี 5 ตัวอักษรฉันสามารถเลือกสี่เหลี่ยมผืนผ้าให้มีความกว้าง 15 ตัวอักษรและสูง 2 บรรทัด ไม่สามารถทำได้ด้วยextend-rectangle-to-endเนื่องจากการเลือกรูปสี่เหลี่ยมผืนผ้าซึ่งจะเป็น 30x2 เสมอ
Kaushal Modi

1
picture-modeเก่าและไม่เป็นที่รู้จัก ในบรรดาคุณสมบัติที่รู้จักกันน้อยอื่น ๆ ก็มี: exiting ( C-c C-c) ลบช่องว่างต่อท้าย
ดึง

1
นั่นยอดเยี่ยม Drew! คำถาม: มีเหตุผลใดที่จะไม่แนะนำrectangle-minor-modeให้ห่อด้วยpicture-modeหรือเปล่า? (คำแนะนำเนื่องจากฉันไม่เห็น hooks ในแหล่งที่มาของrectangle-minor-mode)
rasmus

1
นี่คือคำแนะนำของฉัน btw มันไม่ได้ตัดช่องว่างเนื่องจากว่าเป็นชนิดของเหตุสมควรสำหรับที่นี่:(defun rectangle-mark-mode-wrapped-in-picture-mode (orig-fun &rest args) (if rectangle-mark-mode (picture-mode) (and (eq major-mode 'picture-mode) (picture-mode-exit t)))) (advice-add 'rectangle-mark-mode :around #'rectangle-mark-mode-wrapped-in-picture-mode)
Rasmus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.