emacs में, मैं केवल एक ऑर्ग मोड फ़ाइल में 'शीर्षलेख' खोजना चाहता हूं।emacs संगठन मोड, केवल शीर्षलेख खोजें
आइडिया 1:। केवल दर्शनीय
मैं, सब कुछ छुपा तो केवल रूपरेखा दिखा कर इस लक्ष्य को हासिल कर सकता है (एस-टैब, एस-टैब) और उसके बाद हो सकता है कि सभी दिख रहा है खोज खोज (इस मामले में यह सामग्री की पूरी तालिका होगी)। लेकिन मैं केवल दृश्य सामग्री कैसे खोजूं? सी-एस सब कुछ खोजता है।
आइडिया 2: उपयोग regex
मैं संभवतः कर सकते हैं:
C-c// //opens regex search
\*.*heading //start with * (escaped), followed by any chars, then heading.
लेकिन इस समय यह है कि के सभी टाइप करने के लिए बोझिल है। ध्यान में रखते हुए मैंने 3 घंटे पहले emacs सीखना शुरू कर दिया है, क्या मैं इसे किसी भी तरह से स्वचालित कर सकता हूं?
E.g, क्या मैं "*। * ARGUMENT" के साथ खोजने के लिए एक फ़ंक्शन लिख सकता हूं और इसे हॉटकी बांध सकता हूं? लेकिन अभी भी 'अगली खोज, अगली खोज' आदि जैसे जाने की क्षमता है ..?
इस के लिए उपयोग के मामले मेरे नोट खोज रहा है। कुछ ~ 7000 + लाइन लंबी हैं और मैं आमतौर पर केवल हेडर की खोज करता हूं।
[संपादित करें समाधान 1]
@ abo-abo का जवाब मेरे लिए अच्छी तरह से काम किया। मैं अब helm-org-in-buffer-headings
Ie उपयोग करते हैं, मैं Melpa स्थापित: M-x package-list-packages
तब मैं अपने .emacs संपादित और इसे करने के लिए एक हॉटकी बाध्य:
https://github.com/milkypostman/melpa#usage
तो मैं पैकेज सूची से पतवार स्थापित (global-set-key (kbd "C-=") 'helm-org-in-buffer-headings) ;Outline search.
मैंने emacs को फिर से लोड किया और अब Ctrl + दबाकर एक खोजने योग्य रूपरेखा पॉप अप हो जाती है जो अतिरिक्त वर्णों में टाइप होने पर स्वचालित रूप से नीचे आती है। सामान्य सी-एन, सी-पी, बटन नेविगेशन के लिए काम करते हैं।
धन्यवाद!
[समाधान 2 संपादित करें] जिज्ञासा मुझे सबसे अच्छा मिला। हेल्म की शीर्षक खोज का आनंद लेने के बाद, मैंने भी बदतर के साथ गड़बड़ी की। यह हेलम की तरह है (यह हेलम का उपयोग करता है) लेकिन अच्छा दिखता है और मैं संख्या कुंजी दबाकर रूपरेखा का 'स्तर' चुन सकता हूं। मैं उपयोग की है, तो खोज शीर्षक के लिए सिर्फ आवश्यक बिट्स बाहर काट दिया,:
;; ——— WORF Utilities ———————————————————————————————————————————————————————————————
;; https://github.com/abo-abo/worf/blob/master/worf.el
(defun worf--pretty-heading (str lvl)
"Prettify heading STR or level LVL."
(setq str (or str ""))
(setq str (propertize str 'face (nth (1- lvl) org-level-faces)))
(let (desc)
(while (and (string-match org-bracket-link-regexp str)
(stringp (setq desc (match-string 3 str))))
(setq str (replace-match
(propertize desc 'face 'org-link)
nil nil str)))
str))
(defun worf--pattern-transformer (x)
"Transform X to make 1-9 select the heading level in `worf-goto'."
(if (string-match "^[1-9]" x)
(setq x (format "^%s" x))
x))
(defun worf-goto()
"Jump to a heading with `helm'."
(interactive)
(require 'helm-match-plugin)
(let ((candidates
(org-map-entries
(lambda()
(let ((comp (org-heading-components))
(h (org-get-heading)))
(cons (format "%d%s%s" (car comp)
(make-string (1+ (* 2 (1- (car comp)))) ?\)
(if (get-text-property 0 'fontified h)
h
(worf--pretty-heading (nth 4 comp) (car comp))))
(point))))))
helm-update-blacklist-regexps
helm-candidate-number-limit)
(helm :sources
`((name . "Headings")
(candidates . ,candidates)
(action . (lambda (x) (goto-char x)
(call-interactively 'show-branches)
(worf-more)))
(pattern-transformer . worf--pattern-transformer)))))
और फिर एक गर्म कुंजी के लिए यह करार किया:
(global-set-key (kbd "<f3>") 'worf-goto)
worf-goto बहुत असाधारण है। साझा करने के लिए धन्यवाद। –
खुशी है कि आप इसे पसंद करते हैं। यदि आप अपने Emacs Lisp फ़ाइलों के लिए एक समान चीज़ चाहते हैं तो 'lispy-goto' आज़माएं। –