เปิดใช้งานการจับคู่แบบคลุมเครือ ivy ได้ทุกที่ยกเว้นใน swiper


10

ฉันใช้ไปflx-ido-modeระยะหนึ่งแล้วก็ชอบ ivy--regex-fuzzyไอวีสามารถทำงานในลักษณะเดียวกันโดยใช้

ปัญหาคือว่าswiperจะใช้การจับคู่แบบคลุมเครือในตอนนี้และในกรณีนี้ฉันไม่ชอบมันมาก (อย่างน้อยก็ไม่เป็นค่าเริ่มต้นตลอดเวลา)

ดังนั้นฉันต้องการใช้การจับคู่แบบคลุมเครือกับ Ivy swiperต่อไป มีวิธีกำหนดค่านี้ไหม หรือฉันสามารถบอกได้swiperว่าฉันกำลังมองหาสตริงย่อย "นี้" จริงๆตอนนี้โดยคำนำหน้าบางอย่าง?

คำตอบ:


16

ฉันต้องการใช้การจับคู่แบบคลุมเครือกับ Ivy swiperต่อไป

ตัวแปรที่กำหนดว่า "regexp builder" ซึ่งเป็น Ivy หมายถึงฟังก์ชั่นเหล่านี้จะใช้สำหรับฟังก์ชั่นการเก็บรวบรวมที่ivy-re-builders-alist:

ivy-re-builders-alist is a variable defined in ‘ivy.el’.
Its value is ((t . ivy--regex-plus))

Documentation:
An alist of regex building functions for each collection function.

Each key is (in order of priority):
1. The actual collection function, e.g. ‘read-file-name-internal’.
2. The symbol passed by :caller into ‘ivy-read’.
3. ‘this-command’.
4. t.

Each value is a function that should take a string and return a
valid regex or a regex sequence (see below).

Possible choices: ‘ivy--regex’, ‘regexp-quote’,
‘ivy--regex-plus’, ‘ivy--regex-fuzzy’.

If a function returns a list, it should format like this:
’(("matching-regexp" . t) ("non-matching-regexp") ...).

The matches will be filtered in a sequence, you can mix the
regexps that should match and that should not match as you
like.

ดังนั้นเพื่อที่จะเปลี่ยนผู้สร้าง regexp เริ่มต้นจากivy--regex-plusเป็นivy--regex-fuzzyแต่swiperคุณสามารถทำได้

(setq ivy-re-builders-alist
      '((swiper . ivy--regex-plus)
        (t      . ivy--regex-fuzzy)))

หรือโดยทางโปรแกรมเพิ่มเติม

(with-eval-after-load 'ivy
  (push (cons #'swiper (cdr (assq t ivy-re-builders-alist)))
        ivy-re-builders-alist)
  (push (cons t #'ivy--regex-fuzzy) ivy-re-builders-alist))

(ivy) Completion Stylesนี้จะอธิบายในรายละเอียดเพิ่มเติมใน

ฉันไม่ชอบ [การจับคู่แบบคลุมเครือ] (อย่างน้อยก็ไม่เป็นค่าเริ่มต้นตลอดเวลา)

Ivy ช่วยให้คุณหมุนตัวสร้าง regexp ได้ทันทีผ่านส่วนต่อประสานไฮดรา ประโยคสุดท้ายที่ซ่อนอยู่ของ(ivy) ivy--regex-fuzzyalludes สำหรับสิ่งนี้และสามารถหาคำอธิบายที่สมบูรณ์กว่า(ivy) Hydra in the minibufferนี้ได้ แต่ดูเหมือนว่าคู่มือจะล้าสมัยไปเล็กน้อยเนื่องจากมันใช้เวลาสักครู่ตั้งแต่รีลีสล่าสุด

ผลที่สุดคือตั้งแต่2017-07-04 , Ivy ช่วยให้คุณสามารถหมุนเวียนผู้สร้าง regexp ในระหว่างการดำเนินการผ่านทางC-om( ivy-rotate-preferred-builders) แก้ไข : เป็นแหลมออกโดยAsme Justในความคิดเห็นที่สำคัญเริ่มต้นผูกพันก็เปลี่ยนไปC-oMใน2019/02/06


คุณช่วยอธิบายเกี่ยวกับการปั่นจักรยานให้เสร็จหน่อยได้ไหม? ตัวอย่างเช่นถ้าฉันได้เริ่มค้นหา swiper Co จะให้ฉันทันที "command-execute: ไม่สามารถเปิดไฟล์โหลด: ไม่มีไฟล์หรือไดเรกทอรีเช่น ivy-hydra"
B_old

@B_old ลองติดตั้งivy-hydraแพ็คเกจเพิ่มเติมก่อน คำถามทางศีลธรรมของไม่ว่าจะเป็นปุ่มลัดเริ่มต้นควรมีอยู่สำหรับคุณลักษณะที่เลือก (คือไม่ได้ติดตั้งเสมอ) ได้ถูกยกขึ้นและสภาพที่ดูเหมือนว่าไม่น่าจะเปลี่ยนเร็ว ๆ นี้ หากคุณมีคำถามอื่น ๆ เกี่ยวกับivy-hydraคู่มือไม่ได้อยู่โปรดพิจารณาสร้าง Emacs SE ใหม่สำหรับพวกเขา
เพรา

( ivy-rotate-preferred-builders) เป็นC-o M ค่าเริ่มต้นสำหรับฉันในปัจจุบัน
Asme เพิ่ง

@ AsmeJust ขอบคุณนั่นเป็นการเปลี่ยนแปลงย้อนหลังที่เข้ากันไม่ได้ทำเพียง 2 สัปดาห์ที่ผ่านมา: github.com/abo-abo/swiper/commit/…
Basil

2

หากคุณต้องการปิดการจับคู่ regex ใน swiper แต่เปิดใช้งานที่อื่นให้เพิ่มสิ่งนี้ในuser-init-file:

(setq ivy-re-builders-alist
      '((swiper . regexp-quote)
        (t      . ivy--regex-fuzzy)))

หากคุณต้องการปิดการใช้งานเพียงครั้งเดียวให้กดปุ่มM-rswiper


+1 สำหรับการกล่าวถึงการM-rรวมที่มีประโยชน์ อย่างไรก็ตามโปรดทราบว่า OP ระบุไว้ว่าต้องการปิดใช้งานการจับคู่แบบคลุมเครือเท่านั้น ซึ่งผู้สร้าง regexp ควรแทนที่มันไม่มีความชัดเจน
Basil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.