조직 헤드 라인으로 직접 이동하는 방법


17

조직 파일에 있으면 파일의 모든 조직 헤드 라인으로 구성된 후보 목록을 ivy / helm 스타일로 좁히고 퍼지 검색을 통해 헤드 라인을 선택할 수있는 명령을 원합니다. 에. 그렇게 할 방법이 있습니까?

답변:


13

모션 의 조직 수동 노드 는 내장 명령 org-goto(기본 바인딩 :)에 대한 간결한 설명을 제공하며 C-c C-j, 원하는 효과를 얻기 위해 동작을 쉽게 사용자 지정할 수 있습니다.

  1. 이 매뉴얼 노드 끝에 나열된 사용자 정의 가능 변수의 문서를 검사하십시오. C-h v org-goto-interface RET
  2. org-goto버퍼 아웃 라인을 통해 점진적으로 검색 하는 기본 동작 을 잊고 싶다면 완료를 통해 헤드 라인 선택으로 전환 할 수 있습니다.

    (setq org-goto-interface 'outline-path-completion)
  3. ido/ ivy/ 와 같은 완성 패키지 사용자는 helm전체 대상 경로를 한 번에보기 위해 다음 설정을 변경하려고 할 것입니다.

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

    자세한 내용은 여기 를 참조 하십시오 .

이 접근법은 개인적으로 확인할 수 있듯이 helm기본으로 연결되는 모든 완성 프레임 워크로 작업하는 것의 장점 ( 특정 기능 사용에 비해)을 추가 로 제공합니다 .completing-readivy

추가:

이 답변에 설명 된대로 명령에 대한 outline-path-completion인터페이스를 사용할 때 org-goto사용자 정의 변수 org-goto-max-level는 제공 할 헤드 라인의 최대 깊이를 결정합니다.

편집하다:

유용한 답변이있는 이전의 관련 질문을 찾았습니다 : https : //.com/q/15011703/3084001

설명 (Att Righ의 의견에 따라)

org-goto-interface인식 된 두 값 중 하나로 설정 한다고해서 대체 인터페이스가 희생되는 것은 아닙니다. org-goto접두사 인수 (예 : C-u C-c C-j또는 C-u M-x org-goto RET)를 사용하여 호출 하면 현재 완료에 대한 대체 인터페이스가 자동으로 선택됩니다. 이렇게하면 org-goto-interface가장 자주 사용하는 인터페이스로 설정 하고 일시적으로 동작을 전환하려는 경우 접두사 인수를 사용할 수 있습니다. 이것이 당신의 요구에 맞지 않더라도 org-gotoAtt Righ의 예제에 따라 항상 자신 만의 래퍼를 작성할 수 있습니다 .


> 기본 org-goto 동작을 잊어 버리십시오. 함수 호출 주위에 let 바인딩을 사용하여이 문제를 해결할 수 있습니다.(defun my-org-goto () (let ((org-goto-interface 'outline-path-completion)) (org-goto)))
Att Righ

outline-path-completionhelm내 상자에서 잘 재생되지 않습니다 (한 수준 이상으로 완료 할 수 없습니다- 비활성화되어있는 <TAB>경우 를 눌러 달성 helm : 참조 helm-completing-read-handlers-alist)
Att Righ

@AttRigh 물론, -expression let은 모든 종류의 임시 바인딩에 사용할 수 있습니다. 이 질문은 관련 설정 / 기능 / 패키지에 대한 자세한 내용입니다. 인터페이스의 임시 전환을 달성하는보다 일반적인 방법 org-goto은 접두사 인수를 사용 하여 호출 하는 것입니다. 이 답변에 메모를 추가하겠습니다.
바질

@AttRigh 필자는 파일 ivy과 관련이있는 설정을 일시적으로 필요에 맞게 조정하기 때문에 파일을 다시 작성 org-refile-targets하고의 깊이 설정이 잘못된 경우에만 유사한 것을 본 것을 기억 org-goto합니다. 불행히도 helm현재 기능 을 탐색 할 위치에 있지 않습니다 . 아마 다른 사용자가 차임 할 수 있습니까?
바질

1
자세한 답변을 주신 @Basil에게 감사드립니다. 불행히도이 접근 방식의 완성은 worf또는 뿐만 아니라 작동하지 않습니다 counsel-imenu.
ninrod

8

worf 패키지를 사용 하지만 그 기능 중 하나만 바인딩합니다.

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

worf-goto 미니 버퍼의 버퍼에있는 표제 목록을 제공 한 후 필터링 할 수 있습니다.

패키지는 ivy 작성자가 만들었 으므로 ivy를 좋아한다면 worf를 좋아할 것입니다.

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

1
@tirocinium에게 감사합니다. counsel-imenu완료는 worf보다 우수하지만 level1 조직 헤드 라인을 통해 검색 할 수 없습니다. worfs는 모든 레벨을 검색하므로 원하는 것을 생각합니다.
ninrod

@ninrod org-imenu-depth기본값 2보다 큰 값으로 설정해 보셨습니까 ?
Sam

5

조타 소총이 특히 좋습니다. 또한 imenu 소스를 사용하는 것은 헤더를 표시 할 수 있습니다 (예 : imenu가있는 Helm).


제목 외에도 조직 항목 helm-org-rifle내용 을 검색 한다는 점에 유의해야합니다 . 나는이 행동을 바꿀 방법을 찾지 못했다. 모든 헤드 라인을 검색하지만 퍼지 검색을 지원하지 않는 helm-org-rifle참조 org-search-goto
Att Righ

Att Righ가 옳습니다 helm-org-rifle. 제목 만 검색하지는 않습니다. 이를 수행하기 위해 확장 될 수 있지만 helm-org-in-buffer-headingsHelm 자체에 등이 있기 때문에 그렇게 할 이유가 거의 없습니다.
blujay

4

imenuEmacs에 내장되어 있으며 helm / ivy와 쌍을 이루어 필요한 퍼지 검색을 제공 할 수 있습니다. helm-org-rifle그러나 투구를 사용하는 것이 좋습니다 .


4

자체 프로모션이 가능하지만 orgnav 를 사용해보십시오 . 이 목적을위한 나의 종류의 알파 (그러나 적극적으로 사용되는) 프로젝트입니다.

orgnav 는 컨텐츠가 아닌 헤드 라인을 검색하며 전체 파일이 아닌 검색 깊이, 서브 트리 검색을 다양화할 수 있습니다 (좁히는 경우에도 가능함).

다음은 몇 가지 기능에 대한 비디오입니다. https://asciinema.org/a/1r0fp33xgwh48lfgsh7mllw4u

또한 이 패키지에 영감을 준 패키지 (또는이 패키지에 대한 영감이 한계 인 helm-org패키지)에 대해 알고 있어야 합니다 .helmhelm-org-rifle

(여기에서 답변 제공 : https://www.reddit.com/r/emacs/comments/69mc6l/how_to_jump_directly_to_an_orgheadline/ ) 또한 잠재적으로 관심의 대상은 (다른 키 바인딩 세트를 적용하는 조직 탐색 모드)의 worf-goto일부입니다. worf헤드 라인 앞의 "*"). 이것은와 매우 유사합니다 helm-org.


4

swiper의 라이브러리는 당신의 조직-의제 파일에있는 파일의 헤드 라인 완성입니다 0.9.0의 새로운 기능을 가지고 있습니다.

상담 기관 아젠다 헤드 라인

org init에서 아젠다 파일 목록을 설정해야합니다.

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

@tirocinium의 답변과 관련하여 이것은 많은 의제 파일과 동일하지만 제공합니다.


3

나는 사용 counsel-imenu한다; 그것은 다른 머리를 나열합니다, 당신은 당신의 선택을 좁히기 위해 몇 가지 문자를 입력 한 다음을 누릅니다 <return>.


안녕 @ gnuvince. 이것은 내가 레벨 1 조직 파일로 바로 이동할 수 없습니까?
ninrod

2

나는 추천한다 helm-org-in-buffer-headings. Helm에 내장되어 있으며 좁은 버퍼를 존중합니다. 간접 버퍼를 사용하여 하위 트리를 독립적으로 편집하는 경우 중요합니다. helm-org-parent-headings트리 helm-org-agenda-files-headings를 탐색하고 모든 일정 파일 을 탐색 할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.