라인을 조직 모드 점검 목록으로 변환하는 방법?


12

다음 목록이 있다고 가정하십시오. 체크리스트로 변환하고 싶습니다.

Lec 1 |         1:20:36
Lec 2 |         1:10:32
Lec 3 |         1:08:33
Lec 4 |         1:20:33
Lec 5 |         1:16:50
Lec 6 |         1:08:49
Lec 7 |         1:17:40
Lec 8 |         1:19:47
Lec 9 |         1:21:22
Lec 10 |        1:23:52
Lec 11 |        1:23:45
Lec 12 |        1:25:32
Lec 13 |        1:19:06
Lec 14 |        1:14:28
Lec 15 |        1:11:01
Lec 16 |        1:24:07
Lec 17 |        1:24:34
Lec 18 |        1:17:17
Lec 19 |        1:14:59
Lec 22 |        1:15:08
Lec 23 |        1:16:48
Lec 24 |        1:24:47
Lec 25 |        1:25:21

어떻게합니까?

(kbd-macro를 사용하여 org수행했습니다. 명령 이 있는지 궁금 합니다.)


많은 방법이 있으며 신속성은 주관적입니다. multiple cursors또는 을 사용 query-search-replace합니다. 검사 목록으로 변환하면 행 앞에 [ ], 올바른?
Kaushal Modi

예. 당신은 간단하게 사용하는 방법을 보여줄 수 multiple cursors또는 query-search-replace?
Nick

다음은 검색 대체 에 사용하는 방법에 대한 자세한 설명 입니다 multiple-cursors. 이 경우에도 마찬가지입니다.
Kaushal Modi

빠른 웹 검색 multiple-cursorsQuery Replace 에 대한 링크 및 매뉴얼 페이지를 표시 합니다. 이 많은 것들이 실제로 잘 문서화되어 있으며 웹 검색에 불과합니다.
Dan

감사합니다. 고급스럽고 약간 복잡한 것 같습니다. 해당 명령 / 도구에 익숙해 져야합니다.
Nick

답변:


23

내가 생각할 수있는 가장 간단한 방법 :

  1. 목록을 선택하십시오.
  2. 점을 첫 번째 열로 이동하십시오.
  3. C-x r t- [ ]RET

끝났습니다.


1
와! 사각형 편집은 매우 간단하지만 강력합니다! 감사합니다!
Nick

대단해 체크리스트 변환에 매우 유용합니다.
OrgAddict

11

첫째, 명확성을위한 일부 의미론. 으로 org-mode하는 일반 목록 중 하나와 함께 시작하거나, 또는 순서가 정렬되어 -, +또는 *어느 그래피 (정렬되지 않은 경우), 또는 숫자 뒤에 .또는 )(주문한 경우). 따라서 예에서 설명하는 "목록"은 아직 org-mode목록이 아닙니다.이 글 머리 기호로 시작하지 않기 때문입니다.

둘째, "체크리스트"로 가정하면 다음 과 같이 일반 목록에 사용 되는 체크 박스 를 의미합니다 org-mode.

- [X] A checked list item
- [ ] An unchecked list item

다음은 선택한 영역의 모든 줄을 확인란이있는 정렬되지 않은 목록으로 변환하는 매우 간단한 기능입니다 (광범위하게 테스트되지는 않았지만 예제에서 작동 함).

(defun org-convert-lines-to-checklist (beg end)
  "Convert all plain lines in region to a plain list with
checkboxes."
  (interactive "r")
  (save-excursion
    (goto-char beg)
    (dotimes (_ (- (line-number-at-pos end) (line-number-at-pos beg)))
      (insert "- [ ] ")
      (indent-according-to-mode)
      (forward-line 1))))

7

아래는 텍스트를 검사 목록 으로 변환하는 또 다른 재미있는 방법 org-mode입니다.

조직 모드 코드 블록을 사용하여 텍스트를 확인란 목록으로 변환

참고 : 결과를 생성하려면 C-c C-c커서가 코드 블록 내에있는 동안 사용 하십시오.
그런 다음 yes메시지가 표시되면 응답하십시오 .

  1. 명명 된 동적 블록으로 목록을 감싸십시오.

    #+NAME: my-list-block  
    #+BEGIN:  
    Lec 1 |         1:20:36'  
    Lec 2 |         1:10:32  
    Lec 3 |         1:08:33  
    Lec 4 |         1:20:33  
         ... More ...  
    Lec 24 |        1:24:47  
    Lec 25 |        1:25:21  
    #+END:  
    
  2. org-mode자주 사용하는 프로그래밍 언어로 코드 블록을 작성 하십시오.

    예 1 - 사용하여 elisp코드 블록을

    #+name: list-into-checklist-elisp
    #+header: :results list raw replace output 
    #+header: :var data=my-list-block()
    #+begin_src elisp
      (dolist (x (split-string data "\n"))
            (princ (format "[ ] %s\n" x)))
    #+end_src
    
    #+RESULTS: list-into-checklist-elisp
    - [ ] Lec 1 |         1:20:36
    - [ ] Lec 2 |         1:10:32
    - [ ] Lec 3 |         1:08:33
    - [ ] Lec 4 |         1:20:33
    - [ ]       ... More ...
    - [ ] Lec 24 |        1:24:47
    - [ ] Lec 25 |        1:25:21
    

    예 2 - 사용하여 perl코드 블록을

    #+name: list-into-checklist-perl
    #+header: :results list raw replace output
    #+header: :var data=my-list-block()
    #+begin_src perl
      map { printf qq([ ] %s\n), $_ } split(/\n/, $data); 
    #+end_src
    
    #+RESULTS: list-into-checklist-perl
    - [ ] Lec 1 |         1:20:36
    - [ ] Lec 2 |         1:10:32
    - [ ] Lec 3 |         1:08:33
    - [ ] Lec 4 |         1:20:33
    - [ ]       ... More ...
    - [ ] Lec 24 |        1:24:47
    - [ ] Lec 25 |        1:25:21
    

    예 3 - 사용하여 bash코드 블록을

    #+name: list-into-checklist-bash
    #+header: :results list raw replace output
    #+header: :shebang #!/usr/bin/env bash
    #+header: :var data=my-list-block()
    #+begin_src sh
      while IFS="\n" read -ra ADDR; do
            for i in "${ADDR[@]}"; do
                echo "[X] $i"
            done
       done <<< "$data"
    #+end_src
    
    #+RESULTS: list-into-checklist-bash
    - [X] Lec 1 |         1:20:36
    - [X] Lec 2 |         1:10:32
    - [X] Lec 3 |         1:08:33
    - [X] Lec 4 |         1:20:33
    - [X]       ... More ...
    - [X] Lec 24 |        1:24:47
    - [X] Lec 25 |        1:25:21
    

    예 4 - 사용하여 python코드 블록을

    #+name: list-into-checklist-python
    #+header: :results list raw replace output
    #+header: :var data=my-list-block()
    #+Begin_src python
      l = ["[ ] {x}".format(x=row) for row in data.splitlines()]
      for i in l: print i
    #+end_src 
    
    #+RESULTS: list-into-checklist-python
    - [ ] Lec 1 |         1:20:36
    - [ ] Lec 2 |         1:10:32
    - [ ] Lec 3 |         1:08:33
    - [ ] Lec 4 |         1:20:33
    - [ ]       ... More ...
    - [ ] Lec 24 |        1:24:47
    - [ ] Lec 25 |        1:25:21
    

    예 5 - 사용하여 ruby코드 블록을

    #+name: list-into-checklist-ruby
    #+header: :results list raw replace output
    #+header: :var data=my-list-block()
    #+Begin_src ruby
      for l in  data.split("\n")
        puts "[ ] #{l}"
      end
    #+end_src 
    
    #+RESULTS: list-into-checklist-ruby
    - [ ] Lec 1 |         1:20:36
    - [ ] Lec 2 |         1:10:32
    - [ ] Lec 3 |         1:08:33
    - [ ] Lec 4 |         1:20:33
    - [ ]       ... More ...
    - [ ] Lec 24 |        1:24:47
    - [ ] Lec 25 |        1:25:21
    

질문 해 주셔서 감사합니다!

도움이 되었기를 바랍니다.

참고 :이 코드는 다음 버전의 emacs 및 org-mode를 사용하여 테스트되었습니다.

GNU Emacs 24.4.1 (x86_64-apple-darwin14.0.0, NS apple-appkit-1343.14)
Org-mode version 8.2.10 (8.2.10-29-g89a0ac-elpa)

6

검색 및 바꾸기 사용 :

M-%레크 Enter -[] 레크 Enter

확인란에는 공백이 있지만 여기에는 잘 보이지 않습니다.


이것은 또한 잘 작동합니다. 하나만 답변으로 표시 할 수 있으므로 투표 만 할 수 있습니다. 대단히 감사합니다.
Nick

3

에서 악 모드 또는 Spacemacs 당신은 당신이 기본 키 할당을 변경하지 않은 가정이 작업을 수행 할 수 있습니다 :

  1. 일반 상태 (Vim의 일반 모드와 동일)에서 커서를 목록 의 첫 번째 줄 의 시작 부분으로 이동하십시오 .

  2. Ctrl+를 누릅니다 v.

  3. 목록의 나머지j마다 한 번씩 누르 십시오. (또는 목록에 남아있는 줄 수와 키를 차례로 입력하십시오. 예를 들어 : .)j24j

  4. Shift+를 누릅니다 i.

  5. 을 입력하십시오 - [ ].

  6. 를 누릅니다 Esc.

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