org-mode перейти до останнього заголовка?


10

org-mode переходить до останнього заголовка у поточному дереві.

Скажіть, це мій org-файл, вказівник показує курсор:

* Top|
** Apple
** Banana
** Cherry
* Middle
** Ape
** Bear
** Cat

Я хотів би запустити команду, і тепер мій курсор буде тут:

* Top|
** Apple
** Banana
** Cherry|
* Middle
** Ape
** Bear
** Cat

2
Останній заголовок у файлі чи поточне дерево?
Захід

@Zavior Добре запитання. Я уточнив оригінальне питання.
Олексій Бараноський

Відповіді:


9

Насправді org-end-of-subtreeфункція є, але вона не є інтерактивною. Ви можете просто визначити власну команду:

(defun goto-last-heading ()
  (interactive)
  (org-end-of-subtree))

5

Ось команда, заснована на відповіді @ itsjeyd, яка є надійною для крайового випадку, зазначеного в коментарі до цієї відповіді (тобто, коли ви перебуваєте в останньому заголовку / піддіреві):

(defun org-end-of-subtree ()
  (interactive)
  (let ((org-special-ctrl-a/e t))
    (if (condition-case nil
            (outline-forward-same-level 1)
          (error t))
        (progn
          (goto-char (point-max))
          (outline-back-to-heading))
      (outline-previous-visible-heading 1))
    (org-end-of-line 1)))

4

Я не думаю, що для цього є вбудована команда, але ви можете легко визначити її самостійно:

(defun org-goto-last-heading-in-tree ()
  (interactive)
  (org-forward-heading-same-level 1)     ; 1. Move to next tree
  (outline-previous-visible-heading 1)   ; 2. Move to last heading in previous tree
  (let ((org-special-ctrl-a/e t))        ; 3. Ignore tags when
    (org-end-of-line)))                  ;    moving to the end of the line

І прив’яжіть його до ключової послідовності на ваш вибір за допомогою:

(define-key org-mode-map (kbd "C-c g") 'org-goto-last-heading)

це приємно, дякую за спільний доступ, проте, можливо, мені потрібно бути чіткішими в моєму питанні. Те, що я дуже хочу, - це піти до кінця нинішнього дерева ...
Олексій Бараноський

@AlexBaranosky Так, це було не зрозуміло з того, як ви спочатку формулювали це запитання. Дайте мені секунду, щоб відкоригувати код ...
itsjeyd

@AlexBaranosky Добре, це слід робити. Дякуємо, що уточнили ваші вимоги!
itsjeyd

Я б запропонував не використовувати C-c lприв'язку. Це режим org, що пропонується для прив'язки, org-store-linkоскільки він дуже тісно пов'язаний з org-insert-link( C-c C-l).
Каушал Моді

@kaushalmodi Так, дякую. Я скоригував свою відповідь.
itsjeyd
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.