ใช้แหวนมาร์คอย่างมีประสิทธิภาพ


29

ฉันใช้เครื่องหมายเพื่อเลือกขอบเขตของบัฟเฟอร์ ตัวอย่างเช่นผมรู้ลำดับสามารถนำมาใช้เพื่อเลือกข้อความทั้งหมดระหว่างจุดปัจจุบันและจุดหลังจากการค้นหาสำหรับC-<space> C-s foofoo

ฉันเพิ่งค้นพบการมีอยู่ของวงแหวนทำเครื่องหมายดังนั้นฉันสามารถC-<space> C-<space>ออกจากเครื่องหมายย้ายจุดในบัฟเฟอร์และจากนั้นC-u C-<space>จะกระโดดกลับ

มีคำแนะนำคำแนะนำหรือเคล็ดลับในการนำทางอย่างมีประสิทธิภาพโดยใช้วงแหวนทำเครื่องหมายหรือไม่?


2
ขอบคุณที่ถามคำถาม หนึ่งความคิดที่เกิดขึ้นกับผมคือการทำให้เร็วขึ้นมีผลผูกพันสำหรับ "การเพิ่มเครื่องหมาย" (global-set-key (kbd "s-m") '(lambda () (interactive) (push-mark)))เช่น
Joe Corneli

คำตอบ:


22

helm-all-mark-ringsพวงมาลัยมีอินเตอร์เฟซสำหรับการท่องทั้งในระดับท้องถิ่นและระดับโลกเครื่องหมายแหวนนี้:

ดูคู่มือขนาดเล็กสำหรับคำอธิบายสั้น ๆ และภาพหน้าจอ

และถ้าคุณต้องการไอวี / Swiper / ที่ปรึกษาcounsel-mark-ringดู


น่ากลัว สิ่งหนึ่งที่สามารถปรับปรุงได้คือการลบเครื่องหมายออกจากเครื่องหมายวงแหวน ...
Joe Corneli

12

เมื่อคุณตั้งค่าset-mark-command-repeat-popที่จะtผ่าน

(setq set-mark-command-repeat-pop t)

คุณสามารถกดได้C-SPCหลังจากการขอร้องครั้งแรกของC-u C-SPCเพื่อข้ามไปยังตำแหน่งก่อนหน้าที่เก็บไว้ในวงแหวนทำเครื่องหมาย


10

ฉันพบว่าการใช้รีจิสเตอร์เพื่อทำเครื่องหมายที่ตั้งทำได้ง่ายกว่า: C-x r <space>จากนั้นจดหมายที่จะทำเครื่องหมายC-x r jและตัวอักษรเพื่อย้อนกลับ ฉันสามารถรักษาจำนวนเครื่องหมายซึ่งมีประโยชน์มากเมื่อสลับกันระหว่างบัฟเฟอร์หลายอัน


2
ฉันมักจะพบว่าตัวเองหยุดเพื่อตัดสินใจว่าจดหมายที่ดีที่สุดในการมอบหมายให้ลงทะเบียนของฉัน ...
nispio

@nispio เมื่อไม่นานมานี้ฉันได้ใช้ส่วนขยาย git@github.com: atykhonov / iregister.el.git หนึ่งในความคิดคือ: อนุญาตให้ข้ามการตัดสินใจที่จะลงทะเบียนเพื่อใช้ อาจเป็นส่วนขยายที่จะไม่เป็นประโยชน์สำหรับคุณ แต่คุณสามารถยืมความคิดที่สคริปต์ที่กำหนดเองของคุณสามารถใช้การลงทะเบียนฟรีแล้วมันจะอนุญาตให้เรียกดูการลงทะเบียนที่ใช้แล้วและกู้คืน
Andriy Tykhonov

9

C-x C-xสำหรับที่มีการใช้งานคล้ายกับexchange-mark-and-point C-u C-spaceมันช่วยให้คุณเด้งระหว่างจุดและเครื่องหมายสุดท้าย มันแปลกเล็กน้อยสำหรับการตีกลับtransient-mark-modeในขณะที่มันเปิดใช้งานเครื่องหมายและเลือกภูมิภาค


C-x C-xด้วย transient-mark-mode นั้นยอดเยี่ยมสำหรับการเลือกสิ่งสุดท้ายที่คุณเลือก (มีประโยชน์กับโหมด iedit) หรือ yanked
Rune Kaagaard

8

นอกเหนือจากเคล็ดลับอื่น ๆ ที่คุณได้รับที่นี่ฉันคิดว่าฉันควรพูดถึงว่าC-sกำหนดเครื่องหมายสำหรับคุณดังนั้นจึงไม่จำเป็นต้องทำอย่างชัดเจน นอกจากนี้คำสั่งจำนวนมากที่ "เลื่อนไปทางยาว" ( beginning-of-bufferและend-of-bufferตัวอย่าง) ยังตั้งเครื่องหมายที่คุณเริ่ม ร่วมกับวิธีอื่น ๆ ในการทำงานกับเครื่องหมาย (ป๊อปจุดแลกเปลี่ยนและเครื่องหมาย ฯลฯ ) มันเป็นวิธีที่มีประสิทธิภาพมากในการทำงานกับบัฟเฟอร์เมื่อคุณเข้าใจวิธีการทำงาน โปรดทราบว่าหากคุณดึงข้อความลงในบัฟเฟอร์ให้ชี้และทำเครื่องหมายล้อมรอบข้อความที่ดึงออก


5

(คำถามของคุณค่อนข้างเปิดกว้างดังนั้นจึงอาจถูกปิดเนื่องจากความคิดเห็นเป็นหลัก)

สิ่งที่ฉันใช้: Icicles หลายคำสั่ง icicle-goto-marker (ผูกไว้กับC-- C-SPC) เพื่อเดินทางรอบเครื่องหมายในบัฟเฟอร์ใด ๆ ( mark-ring) และicicle-goto-global-marker( C-- C-x C-SPC) เพื่อเดินทางท่ามกลางเครื่องหมายโลก ( global-mark-ring)

บรรทัดของข้อความที่มีการระบุตำแหน่งเครื่องหมายถูกใช้เป็นตัวเลือกที่สมบูรณ์ คุณสามารถพิมพ์ข้อความบางส่วน (เช่นสตริงย่อย regexp) เพื่อ จำกัด ผู้สมัครให้แคบลงในบรรทัดที่ตรงกับ คุณสามารถวนรอบบรรทัดที่ตรงกันเยี่ยมชมใด ๆ ที่คุณชอบ หากคุณใช้ไลบรารีcrosshairs.elตำแหน่งของเครื่องหมายที่คุณเข้าชมจะถูกเน้นด้วยกากบาทชั่วคราวเพื่อให้คุณสามารถดูได้อย่างรวดเร็ว

นี่คือส่วนหนึ่งของสตริงเอกสารสำหรับicicle-goto-marker:

Go to a marker in this buffer, choosing it by the line that includes it.
If `crosshairs.el' is loaded, then the target position is highlighted.

By default, candidates are sorted in marker order, that is, with
respect to their buffer positions.  Use `C-M-,' or `C-,' to change the
sort order.

During completion you can use these keys:

`C-RET'   - Goto marker named by current completion candidate
`C-down'  - Goto marker named by next completion candidate
`C-up'    - Goto marker named by previous completion candidate
`C-next'  - Goto marker named by next apropos-completion candidate
`C-prior' - Goto marker named by previous apropos-completion candidate
`C-end'   - Goto marker named by next prefix-completion candidate
`C-home'  - Goto marker named by previous prefix-completion candidate
`<S-delete>' - Delete marker named by current completion candidate

Use `mouse-2', `RET', or `S-RET' to choose a candidate as the final
destination, or `C-g' to quit.
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.