doğrudan bir kuruluş başlığına nasıl atlanır?


17

Bir kuruluş dosyasındaysanız, dosyadaki tüm kuruluş başlıklarından oluşan sarmaşık / dümen tarzında bir aday listesini daraltan ve atlamak istediğim bulanık arama yoluyla başlığı seçmeme izin veren bir komut istiyorum için. Bunu yapmanın bir yolu var mı?

Yanıtlar:


13

Motion'daki Org Manual düğümü , davranışı istenen efekti elde etmek için kolayca özelleştirilebilen yerleşik komutun org-goto(varsayılan bağlama :) biraz özlü bir tanımını verir C-c C-j:

  1. Bu manuel düğümün sonunda listelenen özelleştirilebilir değişkenin belgelerini inceleyin: C-h v org-goto-interface RET
  2. org-gotoTamponun ana hattından aşamalı olarak aramanın varsayılan davranışından vazgeçmekten mutluluk duyarsanız, tamamlama yoluyla bir başlık seçmeye geçebilirsiniz:

    (setq org-goto-interface 'outline-path-completion)
  3. ido/ ivy/ Gibi tamamlama paketlerinin kullanıcıları, helmhedef yolun tamamını aynı anda görmek için muhtemelen aşağıdaki ayarı değiştirmek isteyecektir:

    (setq org-outline-path-complete-in-steps nil)

    Daha fazla tartışma için buraya bakın .

Bu yaklaşım, kişisel olarak onaylayabildiğim gibi helm, varsayılana takılan tüm tamamlama çerçeveleriyle çalışmanın ek faydasına (örneğin, -özel işlevsellik kullanma) sahiptir .completing-readivy

EK:

Komutun outline-path-completionarayüzünü org-gotobu cevapta açıklandığı gibi kullanırken, özelleştirilebilir değişken org-goto-max-level, sunulacak maksimum başlık derinliğini belirler.

DÜZENLE:

Yararlı cevapları olan daha eski ve alakalı bir soru buldum: /programming//q/15011703/3084001

AÇIKLAMALAR (Att Righ'in yorumunda istendiği gibi):

org-goto-interfaceTanınan iki değerden birine ayarlanması , alternatif arabirimin feda edilmesi anlamına gelmez. org-gotoBir önek bağımsız değişkeniyle (yani C-u C-c C-jveya C-u M-x org-goto RET) çağrı yapmak, otomatik olarak geçerli tamamlama için alternatif arabirimi seçer. Bu şekilde, org-goto-interfaceen sık kullanacağınız arabirime ayarlayabilir ve davranışı geçici olarak değiştirmek istediğinizde önek bağımsız değişkenini kullanabilirsiniz. Bu bile ihtiyaçlarınızı karşılamıyorsa, org-gotoAtt Righ örneğine göre her zaman kendi paketleyicinizi yazabilirsiniz .


> varsayılan org-goto davranışından (defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))
vazgeç

outline-path-completionile güzel oynamıyor helm(- basılarak elde değil tam geçmiş bir seviye olabilir benim kutuyu <TAB>eğer helm : bakınız devre dışı helm-completing-read-handlers-alist)
Av Righ

@AttRigh Tabii, -ifadeler lether türlü geçici ciltleme için kullanılabilir; bu soru ilgili ayarlar / işlevsellik / paketler hakkında daha fazladır. Geçici bir arayüz geçişi elde etmenin daha genel bir yolu org-goto, bir önek argümanıyla çağırmaktır . Bu cevaba bir not ekleyeceğim.
Fesleğen

@AttRigh Benzer bir şey gördüğümü hatırlıyorum ivy, ancak sadece yeniden doldururken ve yanlış bir derinlik ayarıyla org-refile-targets, yeniden org-gotodoldurmayla ilgili ayarları geçici olarak ihtiyaçlarına göre uyarladığı için. Maalesef helmşu anda işlevselliği keşfedecek bir konumda değilim , belki başka bir kullanıcı girebilir?
Fesleğen

1
ayrıntılı cevap için @Basil teşekkürler. Ne yazık ki, bu yaklaşımdaki tamamlanma worfya da iyi çalışmıyor counsel-imenu.
ninrod

8

Paket worf kullanıyorum , ancak işlevlerinden yalnızca birini bağladım :

 (use-package worf
    :diminish worf-mode
    :bind (:map org-mode-map ("C-c h" . worf-goto)))

worf-goto size, daha sonra filtreleyebileceğiniz mini arabelleğin ara belleğindeki başlıkların bir listesini verir.

Paket sarmaşık yazar tarafından yapılır , bu yüzden sarmaşık gibi, solucan gibi olabilir.

Worf.el'den bazı alakalı snippet'ler :

;;  - "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)))))

1
teşekkürler @tirocinium. counsel-imenutamamlama işlemi solucandan daha iyi çalışır ancak 1. düzey kuruluş başlıklarında arama yapamaz. worfs tüm seviyeleri arar, bu yüzden ben aradığım bu düşünüyorum.
ninrod

@ninrod org-imenu-depthVarsayılan 2'den daha büyük bir şeye ayarlamayı denediniz mi?
Sam

5

Dümen-org-tüfek özellikle güzel buluyorum. Ayrıca imenu kaynağını alan her şey üstbilgileri görüntüleyebilir (ör. İmenu ile Helm).


Unvanlara ek olarak kuruluş girişlerinin içeriğini de helm-org-riflearadığı belirtilmelidir . Bu davranışı değiştirmenin bir yolunu bulamadım. tüm başlıkları araştıran ancak bulanık aramayı gerçekten desteklemeyen referanslar . helm-org-rifleorg-search-goto
Att Righ

Att Righ haklı, helm-org-riflesadece başlık aramıyor. Bunu yapmak için genişletilebilir, ancak helm-org-in-buffer-headingsHelm'in kendisinde vb. Mevcut olduğundan bunu yapmak için çok az neden vardır .
blujay

4

imenuEmacs içine yerleştirilmiştir ve gerekli bulanık arama sağlamak için dümen / sarmaşık ile eşleştirilebilir. helm-org-rifleAncak dümen kullanmanızı öneririm .


4

Hoş olmayan kendi kendini tanıma , ancak orgnav'ı denemek isteyebilirsiniz . Bu benim alfa (ama aktif olarak kullandığım) projem bu amaç için.

orgnav içerik yerine başlıkları arar, arama derinliğini, tüm dosya yerine arama alt ağaçlarını değiştirebilir (ancak bu daralma ile de sağlanabilir).

İşte bazı özelliklerin bir videosu: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u

Muhtemelen bir helm-orgkısmı helmbu paket için ilham kaynağı olan (ya da daha ziyade sınırlamaları bu paket için ilham kaynağı olan) helm-org-rifleve diğer yazılarda tartışılan paketin farkında olmalısınız .

(Yanıtların izniyle: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/ ) Ayrıca ilgi çekici worf-gotoolan worf( "*" başlıklardan önce). Bu çok benzer görünüyor helm-org.


4

Swiper kütüphanesi org-gündem-dosyalarında dosyaların başlıklar için tamamlanmasını olan 0.9.0 yeni bir özellik vardır.

avukat-org-gündem-başlıkları

Ajanda dosyaları listenizi org init içinde ayarlamanız yeterlidir.

(setq org-agenda-files (list "~/org/work.org"
                             "~/org/school.org" 
                             "~/org/home.org"))

@ Tirocinium'un cevabı ile ilgili olarak, bu aynı fakat birçok gündem dosyası için sağlar.


3

Ben kullanıyorum counsel-imenu; farklı kafaları listeleyecektir, seçiminizi daraltmak için bazı harfleri yazabilir ve sonra düğmesine basabilirsiniz <return>.


hi @gnuvince. bu seviye 1 org dosyalarına atlamak için izin vermiyor değil mi?
ninrod

2

Ben tavsiye ederim helm-org-in-buffer-headings. Helm'de yerleşiktir ve daraltılmış arabelleklere saygı duyar, bu da alt ağaçları bağımsız olarak düzenlemek için dolaylı arabellekler kullanırsanız önemlidir. Orada da helm-org-parent-headingsbir ağaca gezinmek için ve helm-org-agenda-files-headingstüm gündemi dosyalar arasında gezinmek için.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.