2015-01-19 8 views
5

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) 

उत्तर

3

worf-gotoworf से, तो helm-org-in-buffer-headings कर सकते हैं से ऐसा कर सकते हैं helm

worf-goto वास्तव में एक वापस अंत के रूप में helm उपयोग करता है।helm-org-in-buffer-headings के अलावा, आपको मिलता है:

  • शीर्षकों मूल बफर
  • आप उचित अंकों
+0

worf-goto बहुत असाधारण है। साझा करने के लिए धन्यवाद। –

+0

खुशी है कि आप इसे पसंद करते हैं। यदि आप अपने Emacs Lisp फ़ाइलों के लिए एक समान चीज़ चाहते हैं तो 'lispy-goto' आज़माएं। –

0

का उपयोग कर आप तो एक ही स्तर के साथ सभी शीर्षकों को चुन सकते हैं के रूप में एक ही तरह से रंग के होते हैं आइवी लता स्थापित किया है, आप सभी खुले ऑर्ग मोड बफ़र्स में शीर्षकों खोज करने के लिए वर्तमान बफर या counsel-org-goto-all में शीर्षकों खोज करने के लिए counsel-org-goto उपयोग कर सकते हैं।

यह एक अच्छा विकल्प है यदि आप अन्य चीजें हैं जो Worf के साथ आते हैं स्थापित करने के लिए नहीं करना चाहती है।

संबंधित मुद्दे