Відповіді:
Вузол Org Manual on 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
-специфічні функціональністю) роботою з усіма рамками завершення цієї вилки в значенні за замовчуванням completing-read
, в тому числі, як я можу особисто підтвердити, ivy
.
ДОДАТИ:
Використовуючи outline-path-completion
інтерфейс для org-goto
команди, як описано в цій відповіді, настроювана змінна org-goto-max-level
визначає максимальну глибину заголовків, які можна запропонувати.
Редагувати:
Я знайшов старіше відповідне запитання з корисними відповідями: /programming//q/15011703/3084001
КЛІФІКАЦІЯ (на думку коментаря Атта Райда):
Встановлення 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
, але лише під час заправки та з неправильним налаштуванням глибини org-refile-targets
, оскільки org-goto
тимчасово адаптує відповідні параметри перезавантаження відповідно до своїх потреб. На жаль, helm
наразі я не в змозі досліджувати функціональність, можливо, інший користувач може передзвонити?
worf
або counsel-imenu
.
Я використовую пакетну верфу , але я пов'язую лише одну з її функцій:
(use-package worf
:diminish worf-mode
:bind (:map org-mode-map ("C-c h" . worf-goto)))
worf-goto
дає вам список заголовків у буфері в міні-буфері, який ви можете потім відфільтрувати.
Пакет виготовлений автором плюща , тож якщо вам подобається плющ, вам може сподобатися черв'як.
Деякі відповідні фрагменти з 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, але не може здійснювати пошук за заголовками level1 org. черв'яки здійснюють пошук на всіх рівнях, тому я думаю, що це те, що я шукаю.
org-imenu-depth
щось більше, ніж за замовчуванням 2?
Мені здається, що штурвал-орг-гвинтівка є особливо приємним. Також все, що потребує джерела імені, зможе відображати заголовки (напр., Helm with name).
helm-org-rifle
пошук вмісту організаційних записів на додаток до їх назв. Я не знайшов способу змінити таку поведінку. helm-org-rifle
посилання, org-search-goto
які шукають усі заголовки, але насправді не підтримують нечіткий пошук.
helm-org-rifle
не шукає лише рубрик. Це можна розширити для цього, але причин для цього мало, оскільки helm-org-in-buffer-headings
тощо існують у самому Хелмі.
Бурхливе самореклама, але ви можете спробувати orgnav . Який мій альфа (але активно використовуваний мною) проект для цієї мети.
orgnav шукає заголовки, а не вміст, може змінювати глибину пошуку, шукати підточки, а не весь файл (хоча це також можна досягти за допомогою звуження).
Ось відео про деякі функції: https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u
Напевно, ви також повинні знати про helm-org
пакет, частиною helm
якого був натхненник цього пакету (а точніше, обмеження якого були натхненником цього пакету), а також helm-org-rifle
обговорювалося в інших публікаціях.
(Надайте відповіді тут: https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_direct_to_an_orgheadline/
) Також потенційно представляє інтерес worf-goto
функція як частина worf
(орган навігації в режимі org, який застосовує інший набір клавіш "*" перед заголовками). Це здається дуже аналогічним helm-org
.
Бібліотека swiper має нову функцію в 0.9.0, яка є завершенням до заголовків файлів у ваших org-порядку денного-файлах.
адвокатська організація-заголовки порядку денного
Просто потрібно налаштувати список файлів порядку денного в org init.
(setq org-agenda-files (list "~/org/work.org"
"~/org/school.org"
"~/org/home.org"))
Що стосується відповіді @ tirocinium, це забезпечує те саме, але для багатьох файлів порядку денного.
Рекомендую helm-org-in-buffer-headings
. Він вбудований в Helm, і він поважає звужені буфери, що важливо, якщо ви використовуєте непрямі буфери для незалежного редагування підрядів. Існує також helm-org-parent-headings
для навігації по дереву та helm-org-agenda-files-headings
навігації по всіх файлах порядку денного.
(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))