ให้บอกว่าฉันเปิด 10 บัฟเฟอร์และฉันต้องการค้นหาสิ่งที่เกิดขึ้นblah
ใน 10 บัฟเฟอร์ทั้งหมด ฉันจะทำสิ่งนี้ได้อย่างไร
ให้บอกว่าฉันเปิด 10 บัฟเฟอร์และฉันต้องการค้นหาสิ่งที่เกิดขึ้นblah
ใน 10 บัฟเฟอร์ทั้งหมด ฉันจะทำสิ่งนี้ได้อย่างไร
คำตอบ:
การผสานกับคำสั่ง Emacs ในตัวคุณสามารถใช้multi-occur
หรือmulti-occur-in-matching-buffers
( M-x multi-occur- TAB RET
) multi-occur
ให้การควบคุมที่ดียิ่งขึ้นโดยการให้แต่ละบัฟเฟอร์ใช้ แต่มันน่าเบื่อ multi-occur-in-matching-buffers
ช่วยให้คุณป้อน regexp เพื่อจับคู่ชื่อไฟล์ (ค้นหาเฉพาะในบัฟเฟอร์ที่กำลังเยี่ยมชมไฟล์); ป้อน.
เป็นไฟล์ regexp เพื่อค้นหาในบัฟเฟอร์ทั้งหมดที่กำลังเยี่ยมชมไฟล์
นอกจากนี้ยังมีฟังก์ชั่นสำหรับการค้นหาที่เพิ่มขึ้นในรายการบัฟเฟอร์หรือไฟล์ แต่พวกมันน่าเบื่อเหมือนmulti-occur
พวกเขาต้องการให้แสดงรายการบัฟเฟอร์หรือไฟล์ทีละรายการ
grep
ค้นหาในไฟล์ทั้งหมดในไดเรกทอรีหรือไฟล์ตรงกับรูปแบบบางอย่างไม่ว่าจะเปิดหรือไม่คุณสามารถใช้ มีตัวแปรrgrep
และgrep-find
เพื่อค้นหาไดเรกทอรีย่อยซ้ำ
นอกจากสิ่งที่คนอื่นพูดถึง - นี่คือทรัพยากรสองอย่างสำหรับสิ่งนี้
M-x multi-isearch-buffers
หรือM-x multi-isearch-buffers-regexp
(วานิลลา Emacs) - การค้นหาที่เพิ่มขึ้นในหลาย ๆ บัฟเฟอร์
หากคุณใช้Iciclesคุณสามารถใช้icicle-search
(หรือicicle-occur
หรือจำนวนicicle-search
เฉพาะทางอื่น ๆ) เพื่อค้นหาไฟล์หรือบัฟเฟอร์หลาย ๆ ไฟล์
(นอกเหนือจากการค้นหาและแทนที่ข้ามบัฟเฟอร์แบบกำหนดเองแล้วยังมีคำสั่งแน่นอนที่ทำข้ามไฟล์หลาย ๆไฟล์ตัวอย่างอื่น ๆ ได้กล่าวถึงgrep
และมีแน่นอนA
ใน Dired แต่คุณไม่ได้ถามเกี่ยวกับการค้นหาไฟล์)
ซึ่งสามารถทำได้ด้วยหางเสือhelm-multi-occur
ผ่านคำสั่ง คุณสามารถติดตั้งหางเสือจากmelpaแล้วเรียกคำสั่งดังต่อไปนี้:
M-x helm-multi-occur RET M-a RET
สิ่งนี้จะเปิดขึ้นhelm-multi-occur
จากนั้นเลือกบัฟเฟอร์ทั้งหมด แทนที่จะใช้M-a
เพื่อทำเครื่องหมายบัฟเฟอร์ทั้งหมดคุณสามารถเลือกบัฟเฟอร์ที่สนใจครั้งละหนึ่งตัวเลือก นำทางไปขึ้นและลงรายการที่มีC-n
และและบัฟเฟอร์เครื่องหมายด้วยC-p
C-SPC
เมื่อทำเครื่องหมายบัฟเฟอร์ทั้งหมดแล้วให้กดRET
เพื่อยอมรับบัฟเฟอร์ที่ทำเครื่องหมายไว้และเริ่มค้นหา
หากคุณเพิ่มสิ่งต่อไปนี้ในไฟล์ init ของคุณ:
(require 'helm-regexp)
(eval-after-load "helm-regexp"
'(setq helm-source-moccur
(helm-make-source "Moccur" 'helm-source-multi-occur :follow 1)))
;; (source: http://stackoverflow.com/q/14726601)
(defun my-helm-multi-occur-buffers ()
"multi-occur in all buffers backed by files."
(interactive)
(helm-multi-occur
(delq nil
(mapcar (lambda (b)
(when (buffer-file-name b) (buffer-name b)))
(buffer-list)))))
จากนั้นคุณสามารถผูกคำสั่งmy-helm-multi-occur-buffers
เพื่อทำหลายค่าในบัฟเฟอร์ทั้งหมดที่สำรองข้อมูลโดยไฟล์
helm-swoop
แพ็คเกจใน MELPA มันมีฟังก์ชั่นนี้และอนุญาตให้แก้ไขผลลัพธ์ได้อย่างรวดเร็วเช่นกัน
swiper-all
จากแพ็คเกจ swiperมีเครื่องมือสำหรับการทำเช่นนี้ มันเพิ่มขึ้นเรื่อย ๆ ดังนั้นจึงอัปเดตเมื่อคุณพิมพ์
คุณสามารถใช้ibuffer
โหมดเพื่อทำเครื่องหมายบัฟเฟอร์ที่คุณต้องการค้นหา โทรibuffer-do-isearch
(ผูกM-s a C-s
โดยค่าเริ่มต้น) เพื่อค้นหาข้อความหรือibuffer-do-isearch-regexp
ถ้าคุณต้องการค้นหานิพจน์ทั่วไป
หากคุณไม่คุ้นเคยibuffer
ให้เปิดใช้งานและดูที่เมนูทำเครื่องหมายเพื่อดูวิธีการทั้งหมดที่คุณสามารถเลือกชุดบัฟเฟอร์ที่จะใช้งาน
M-x helm-mini M-a C-s blah
นี่คือวิธีที่มีหางเสืออื่น: หลังจากที่กล่าวอ้างhelm-mini
, M-a
จะทำเครื่องหมายบัฟเฟอร์เปิดทั้งหมดแล้วC-s blah
จะทำหลายเกิดขึ้นในบัฟเฟอร์ทำเครื่องหมาย
helm-swoop
นอกจากนี้ยังมีวิธีการแก้ปัญหาโดยใช้หางเสือโหมดอยู่กับ
ใช้
M-x helm-swoop RET
จากนั้นสำหรับการค้นหาในบัฟเฟอร์ที่เปิดอยู่ให้พิมพ์
M-i
จากนั้นเพียงพิมพ์blah
เพื่อค้นหาในบัฟเฟอร์ทั้งหมด ในหน้าต่างอื่นจะแสดงเหตุการณ์ทั้งหมด
หรือคุณสามารถพิมพ์
M-x helm-multi-swoop
แล้วทำเครื่องหมายบัฟเฟอร์ทั้งหมดที่คุณต้องการค้นหาด้วยM-SPC
หรือC-SPC
กดและการค้นหาสำหรับRET
blah
.
เป็นนิพจน์ปกติที่จะจับคู่ไฟล์ทั้งหมด