หวีเป็นโซลูชัน Lisp Lisp ดั้งเดิมในการค้นหาเรียกดูและคำอธิบายประกอบเหตุการณ์ปกติของการแสดงออกปกติในไฟล์ อินเทอร์เฟซแบบโต้ตอบช่วยให้สามารถจัดหมวดหมู่อย่างละเอียดถี่ถ้วนของผลลัพธ์ทั้งหมดเพื่อแยกแยะผลบวกที่ผิดพลาดและประเมินการจับคู่ที่เหมาะสมในระหว่างการตรวจสอบรหัส
M-x package-install RET comb
M-x package-install-file RET /path/to/comb/
( add-to-list 'load-path " /path/to/comb/ " )
( require 'comb )นี่คือคำแนะนำอย่างรวดเร็วของคุณสมบัติบางอย่างของหวี เพื่อทำการค้นหา:
ย้ายไปที่ไดเรกทอรีรากของที่เก็บข้อมูลที่คุณต้องการตรวจสอบ
เรียกใช้ Mx comb ;
กด c เพื่อเข้าสู่โหมดการกำหนดค่า
เติมฟิลด์ที่ต้องการและทำการค้นหาในที่สุด
หากมีผลลัพธ์บางอย่างที่จะเรียกดูแล้วบัฟเฟอร์ *Comb* จะปรากฏขึ้นจากที่นี่เป็นไปได้ที่จะใส่คำอธิบายประกอบผลลัพธ์ ( ! ) และเปลี่ยนสถานะเป็น appred ( a / A ) ปฏิเสธ ( r / R ) หรือไม่ตัดสินใจ ( u / U ค่าเริ่มต้น)
การกระทำข้างต้นทำงานกับผลลัพธ์ปัจจุบันซึ่งสามารถย้ายไปยังถัดไป ( n ) หรือก่อนหน้า ( p ) ในการทำเช่นนั้นบัฟเฟอร์ *Comb* จะได้รับการอัปเดตเพื่อแสดงไฟล์ที่มีผลลัพธ์ซึ่งตอนนี้ไฮไลต์ เฉพาะผลลัพธ์ที่ตรงกับตัวกรองสถานะ (ขี่จักรยานด้วย f ) และตัวกรองโน้ต regexp (ตั้งค่าด้วย F ) จะปรากฏขึ้น นอกจากนั้น t วางไข่บัฟเฟอร์ที่มีรายการของผลลัพธ์ที่แสดงในปัจจุบันซึ่งจะช่วยให้สามารถค้นหาตัวอย่างและข้ามไปยังผลลัพธ์ได้ที่จุด
ในที่สุดก็เป็นไปได้ที่จะบันทึกเซสชันปัจจุบันไปยัง s และโหลดกลับเพื่อกลับมาตรวจสอบ ( l ) ต่อ
ดูความช่วยเหลือ ( h ) สำหรับรายการคุณสมบัติทั้งหมดและคีย์
รูปแบบที่ใช้โดยหวีคือ regexps ที่มีรส emacs (ดูโหนดข้อมูล (elisp) Regular Expressions ) ยูทิลิตี้ Mx regexp-builder สามารถใช้เพื่อลองใช้ Regexps ก่อนที่จะทำการค้นหาเพียงตรวจสอบให้แน่ใจว่าใช้ไวยากรณ์ที่เหมาะสม ( Cc TAB string ) และออกจากรอบ ๆ "
หวียังยอมรับรายการการโทรกลับที่สามารถใช้ในการสร้างผลการค้นหาเพิ่มเติมเช่นมาจากเครื่องมือผ้าสำลีภายนอก ฟังก์ชั่นเหล่านี้จะถูกดำเนินการด้วย default-directory ไปยังไดเรกทอรีรูทและบัฟเฟอร์ปัจจุบันที่ตั้งค่าเป็นไฟล์ที่ประมวลผลในปัจจุบันพวกเขายอมรับเส้นทางสัมพัทธ์เป็นอาร์กิวเมนต์และต้องส่งคืนรายการช่วงในแบบฟอร์ม (BEGIN . END)
นี่คือตัวอย่างการโทรกลับ:
( defun my-callback ( filename )
" Match only the first occurrence of 'qwerty'. "
( when ( re-search-forward " qwerty " nil t )
( list ( cons ( match-beginning 0 ) ( match-end 0 ))))) ข้อผิดพลาดในการดำเนินการโทรกลับไม่ถึงตายพวกเขาเพิ่งรายงานในบัฟเฟอร์ *Messages*
ใบหน้าและตัวเลือกบางตัวสามารถกำหนดค่าได้ดูที่กลุ่มการปรับแต่ง comb ( Mx customize-group RET comb )
นอกจากนี้ KeyBindings ทั้งหมดในบัฟเฟอร์ *Comb* สามารถเปลี่ยนแปลงได้โดยการเปลี่ยนปุ่ม comb-keymap ตัวอย่างเช่นในการใช้ลูกศรเพื่อนำทางการใช้ผลลัพธ์:
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )สิ่งนี้ไม่ได้ปลดคีย์ bindings ดั้งเดิม มันอาจจะสะดวกในการแทนที่ keymap แทนอย่างสมบูรณ์เพื่อหลีกเลี่ยงการชนกับโหมดที่มีอยู่:
( setq comb-keymap ( make-sparse-keymap ))
( define-key comb-keymap ( kbd " x " ) 'comb-quit )
( define-key comb-keymap ( kbd " ? " ) 'comb-help )
( define-key comb-keymap ( kbd " <left> " ) 'comb-prev )
( define-key comb-keymap ( kbd " <right> " ) 'comb-next )
; ; ... ดูที่ comb-default-keybindings alist เพื่อรับฟังก์ชั่นที่ใช้โดย keybindings เริ่มต้น