หากฉันอยู่ในไฟล์ org ฉันต้องการคำสั่งที่ จำกัด รายชื่อผู้สมัครในสไตล์ ivy / helm ซึ่งประกอบด้วยพาดหัว org ทั้งหมดในไฟล์และให้ฉันเลือกพาดหัวผ่านการค้นหาคลุมเครือซึ่งฉันต้องการข้าม ถึง. มีวิธีทำเช่นนั้นหรือไม่?
หากฉันอยู่ในไฟล์ org ฉันต้องการคำสั่งที่ จำกัด รายชื่อผู้สมัครในสไตล์ ivy / helm ซึ่งประกอบด้วยพาดหัว org ทั้งหมดในไฟล์และให้ฉันเลือกพาดหัวผ่านการค้นหาคลุมเครือซึ่งฉันต้องการข้าม ถึง. มีวิธีทำเช่นนั้นหรือไม่?
คำตอบ:
โหนด Org Manual บนMotionให้คำอธิบายที่ค่อนข้างสั้นของคำสั่งในตัวorg-goto
(การเชื่อมต่อเริ่มต้น:) C-c C-j
ซึ่งพฤติกรรมสามารถปรับแต่งได้อย่างง่ายดายเพื่อให้ได้ผลตามที่ต้องการ:
C-h v org-goto-interface RET
หากคุณมีความสุขที่จะละทิ้งorg-goto
พฤติกรรมเริ่มต้นของการค้นหาโครงร่างของบัฟเฟอร์ที่เพิ่มขึ้นคุณสามารถสลับไปที่การเลือกหัวข้อข่าวผ่านการทำให้สมบูรณ์:
(setq org-goto-interface 'outline-path-completion)
ผู้ใช้แพ็กเกจที่เสร็จสมบูรณ์เช่นido
/ ivy
/ helm
อาจต้องการเปลี่ยนการตั้งค่าต่อไปนี้เพื่อดูเส้นทางทั้งหมดในคราวเดียว:
(setq org-outline-path-complete-in-steps nil)
ดูที่นี่สำหรับการสนทนาเพิ่มเติม
วิธีนี้มีประโยชน์เพิ่ม (มากกว่าการใช้การพูด, helm
การทำงาน -specific) ของการทำงานกับทุกกรอบเสร็จปลั๊กที่เป็นค่าเริ่มต้นรวมทั้งที่ฉันสามารถส่วนตัวยืนยันcompleting-read
ivy
ภาคผนวก:
เมื่อใช้outline-path-completion
อินเตอร์เฟสกับorg-goto
คำสั่งดังอธิบายในคำตอบนี้ตัวแปรที่กำหนดเองได้org-goto-max-level
จะกำหนดความลึกสูงสุดของหัวข้อที่จะเสนอ
แก้ไข:
ฉันพบคำถามที่เก่ากว่าและเกี่ยวข้องกับคำตอบที่มีประโยชน์: /programming//q/15011703/3084001
CLARIFICATION (ตามที่ได้รับแจ้งจากความคิดเห็น Att Righ):
การตั้งค่าorg-goto-interface
เป็นหนึ่งในสองค่าที่รู้จักไม่ได้หมายถึงการเสียสละอินเทอร์เฟซทางเลือก การโทรorg-goto
ด้วยอาร์กิวเมนต์คำนำหน้า (เช่นC-u C-c C-j
หรือC-u M-x org-goto RET
) จะเลือกอินเทอร์เฟซทางเลือกสำหรับการเติมเต็มปัจจุบันโดยอัตโนมัติ ด้วยวิธีนี้คุณสามารถตั้งค่าorg-goto-interface
เป็นอินเทอร์เฟซที่คุณใช้บ่อยที่สุดและใช้อาร์กิวเมนต์คำนำหน้าเมื่อคุณต้องการเปลี่ยนพฤติกรรมชั่วคราว หากสิ่งนี้ไม่ตรงกับความต้องการของคุณคุณสามารถเขียนเสื้อคลุมของคุณเองorg-goto
ตามตัวอย่างของ Att Righ
outline-path-completion
ไม่ได้เล่นอย่างสวยงามhelm
บนกล่องของฉัน (มันไม่สามารถผ่านระดับหนึ่งที่ผ่านมา - ทำได้โดยการกด<TAB>
ถ้าhelm
ปิดการใช้งาน: ดูhelm-completing-read-handlers-alist
)
let
แสดงออกสามารถใช้สำหรับการผูกชั่วคราวใด ๆ ; คำถามนี้เพิ่มเติมเกี่ยวกับการตั้งค่า / ฟังก์ชัน / แพ็คเกจที่เกี่ยวข้อง วิธีทั่วไปที่มากขึ้นในการเปลี่ยนอินเตอร์เฟซชั่วคราวคือการโทรorg-goto
ด้วยอาร์กิวเมนต์คำนำหน้า ฉันจะเพิ่มบันทึกคำตอบนี้
ivy
แต่เฉพาะเมื่อ refiling และตั้งค่าความลึกไม่ถูกต้องorg-refile-targets
เนื่องจากorg-goto
จะปรับการตั้งค่าที่เกี่ยวข้องกับ refile ชั่วคราวเพื่อให้เหมาะกับความต้องการ น่าเสียดายที่ฉันไม่ได้อยู่ในฐานะที่จะสำรวจhelm
ฟังก์ชันการทำงานในขณะนี้ผู้ใช้รายอื่นสามารถพูดสอด
worf
counsel-imenu
ฉันใช้แพ็คเกจworfแต่ฉันผูกเพียงหนึ่งในหน้าที่:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto
แสดงรายการส่วนหัวในบัฟเฟอร์ในมินิบัฟเฟอร์ซึ่งคุณสามารถกรองได้
แพ็คเกจทำโดยผู้สร้างของivyดังนั้นถ้าคุณชอบไม้เลื้อยคุณอาจชอบ worf
ตัวอย่างบางส่วนที่เกี่ยวข้องจากworf.el:
;; - "g" (`worf-goto'): select an outline in the current buffer, with
;; completion. It's very good when you want to search/navigate to
;; a heading by word or level. See https://github.com/abo-abo/lispy
;; for a package that uses this method to navigate Lisp code.
(defun worf-goto-action (x)
(with-ivy-window
(goto-char (cdr x))
(outline-show-children 1000)
(worf-more)))
(defun worf-goto ()
"Jump to a heading with completion."
(interactive)
(let ((cands (worf--goto-candidates)))
(cond ((eq worf-completion-method 'helm)
(require 'helm-multi-match)
(let (helm-update-blacklist-regexps
helm-candidate-number-limit)
(helm :sources
`((name . "Headings")
(candidates . ,cands)
(action . worf-goto-action)
(pattern-transformer . worf--pattern-transformer)))))
((eq worf-completion-method 'ivy)
(ivy-read "Heading: " cands
:action 'worf-goto-action)))))
counsel-imenu
เสร็จสมบูรณ์ทำงานได้ดีกว่า worf แต่ไม่สามารถค้นหาหัวข้อข่าวระดับ 1 ได้ worfs ค้นหาทุกระดับดังนั้นฉันคิดว่านี่คือสิ่งที่ฉันกำลังมองหา
org-imenu-depth
มากกว่าค่าเริ่มต้นของ 2 หรือไม่?
ฉันพบว่า helm-org-rifle ดีเป็นพิเศษ นอกจากนี้ทุกสิ่งที่ใช้แหล่งที่มาของ imenu จะสามารถแสดงส่วนหัว (เช่น Helm with imenu)
helm-org-rifle
ค้นหาเนื้อหาของรายการองค์กรนอกเหนือจากชื่อเรื่อง ฉันไม่พบวิธีแก้ไขพฤติกรรมนี้ helm-org-rifle
การอ้างอิงorg-search-goto
ที่ค้นหาหัวข้อทั้งหมด แต่ไม่สนับสนุนการค้นหาแบบคลุมเครือ
helm-org-rifle
ไม่ค้นหาเฉพาะส่วนหัว มันสามารถขยายออกเพื่อทำสิ่งนี้ได้ แต่มีเหตุผลเล็กน้อยที่จะทำเช่นนั้นเนื่องจากhelm-org-in-buffer-headings
มีอยู่ใน Helm
imenu
สร้างขึ้นใน Emacs และสามารถจับคู่กับ helm / ivy เพื่อให้การค้นหาที่จำเป็น ฉันแนะนำhelm-org-rifle
ถ้าคุณใช้หางเสือ
โปรโมชั่นที่เห็นได้ชัดด้วยตนเอง แต่คุณอาจจะอยากลองออกorgnav ฉันใช้อัลฟ่าประเภทไหน (แต่ฉันใช้งานอย่างแข็งขัน) เพื่อจุดประสงค์นี้
orgnavค้นหาพาดหัวมากกว่าเนื้อหาสามารถเปลี่ยนแปลงความลึกของการค้นหา, subtrees การค้นหามากกว่าทั้งไฟล์ (แม้ว่าสิ่งนี้สามารถทำได้ด้วยการ จำกัด ให้แคบลง)
นี่คือวิดีโอของคุณสมบัติบางอย่าง: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
คุณควรตระหนักถึงhelm-org
แพคเกจซึ่งเป็นส่วนหนึ่งของhelm
แรงบันดาลใจสำหรับแพ็คเกจนี้ (หรือค่อนข้างมีข้อ จำกัด เป็นแรงบันดาลใจสำหรับแพ็คเกจนี้) รวมhelm-org-rifle
ถึงการพูดคุยในโพสต์อื่น ๆ
(คำตอบได้ที่นี่: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/
) ส่วนที่น่าสนใจก็คือworf-goto
ฟังก์ชั่นซึ่งเป็นส่วนหนึ่งของworf
(โหมดการนำทาง org ที่ใช้ชุดคีย์ย่อยที่แตกต่างกัน "*" ก่อนหัวข้อ) helm-org
นี้ดูเหมือนว่าคล้ายคลึงอย่างมาก
swiperห้องสมุดมีคุณลักษณะใหม่ใน 0.9.0 ซึ่งเป็นเสร็จสิ้นสำหรับหัวข้อของไฟล์ใน org-วาระไฟล์ของคุณ
ที่ปรึกษา-org-วาระพาดหัวข่าว
เพียงแค่ต้องตั้งค่ารายการไฟล์วาระของคุณใน org init
(setq org-agenda-files (list "~/org/work.org"
"~/org/school.org"
"~/org/home.org"))
ในความสัมพันธ์กับคำตอบของ @ tirocinium สิ่งนี้ให้เหมือนกัน แต่สำหรับไฟล์วาระต่างๆ
ผมใช้counsel-imenu
; มันจะแสดงรายการหัวที่แตกต่างกันที่คุณสามารถพิมพ์ตัวอักษรที่จะ จำกัด <return>
การเลือกของคุณแล้วเพียงแค่กด
helm-org-in-buffer-headings
ผมขอแนะนำให้ มันมีอยู่ในตัวของ Helm และจะเคารพบัฟเฟอร์ที่แคบซึ่งเป็นสิ่งสำคัญหากคุณใช้บัฟเฟอร์ทางอ้อมเพื่อแก้ไข subtrees อย่างอิสระ นอกจากนี้ยังมีhelm-org-parent-headings
การนำทางต้นไม้และhelm-org-agenda-files-headings
นำทางไฟล์วาระทั้งหมด
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))