Wie konvertiere ich Zeilen in eine Checkliste im Organisationsmodus?

11

Angenommen, ich habe die folgende Liste. Ich möchte es in eine Checkliste umwandeln.

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

Wie es geht?

(Ich habe es mit kbd-macro gemacht. Ich frage mich, ob es einen orgBefehl dafür gibt.)

Nick
quelle
Es gibt viele Möglichkeiten und die Schnelligkeit ist subjektiv. Ich würde multiple cursorsoder verwenden query-search-replace. Mit der Konvertierung in eine Checkliste möchten Sie einfach die Zeilen voranstellen [ ], richtig?
Kaushal Modi
Ja. Können Sie kurz zeigen, wie man multiple cursorsoder benutzt query-search-replace?
Nick
Hier finden Sie eine detaillierte Erklärung zur Verwendung multiple-cursorsdes Such-Ersetzens. Das würde auch für diesen Fall gelten.
Kaushal Modi
Schnelle Websuchen rufen die Links zu multiple-cursorsund die Handbuchseite von Query Replace auf . Viele dieser Dinge sind wirklich gut dokumentiert und nur eine Websuche entfernt.
Dan
Vielen Dank. Es scheint fortgeschritten und ein wenig komplex zu sein. Ich muss mich mit diesen Befehlen / Werkzeugen vertraut machen.
Nick

Antworten:

22

Der einfachste Weg, den ich mir vorstellen kann:

  1. Wählen Sie die Liste aus.
  2. Verschieben Sie den Punkt in die erste Spalte.
  3. C-x r t- [ ]RET

Du bist fertig.

wvxvw
quelle
1
Beeindruckend! Die Bearbeitung von Rechtecken ist so einfach und dennoch leistungsstark! Vielen Dank!
Nick
So großartig. Sehr nützlich für die Konvertierung von Checklisten.
OrgAddict
11

Zunächst einige Semantiken zur Klarheit. In org-modewird eine einfache Liste entweder geordnet oder ungeordnet, beginnend mit a -, +oder *(für ungeordnet) oder einer Zahl, gefolgt von a .oder a )(für geordnet). Also: Die "Liste", die Sie in Ihrem Beispiel beschreiben, ist noch keine org-modeListe, da sie mit keiner dieser Aufzählungszeichen beginnt.

Zweitens meine ich mit "Checkliste" die Kontrollkästchen , org-modedie in den einfachen Listen verwendet werden, wie in:

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

Hier ist eine sehr einfache Funktion, die alle Zeilen in der ausgewählten Region in eine ungeordnete Liste mit Kontrollkästchen konvertiert (nicht ausführlich getestet, funktioniert aber in Ihrem Beispiel):

(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))))
Dan
quelle
7

Im Folgenden finden Sie eine weitere unterhaltsame Möglichkeit, Text in eine org-modeCheckliste umzuwandeln .

Verwenden Sie Codeblöcke im Org-Modus, um Text in eine Liste von Kontrollkästchen zu konvertieren

Hinweis: Um die Ergebnisse zu generieren, verwenden Sie, C-c C-cwährend sich der Cursor innerhalb eines Codeblocks befindet.
Antworten Sie dann, yeswenn Sie dazu aufgefordert werden.

  1. Wickeln Sie Ihre Liste in einen benannten dynamischen Block

    #+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. Schreiben Sie einen org-modeCodeblock in Ihrer bevorzugten Programmiersprache.

    Beispiel 1 - Verwenden eines elispCodeblocks

    #+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
    

    Beispiel 2 - Verwenden eines perlCodeblocks

    #+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
    

    Beispiel 3 - Verwenden eines bashCodeblocks

    #+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
    

    Beispiel 4 - Verwenden eines pythonCodeblocks

    #+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
    

    Beispiel 5 - Verwenden eines rubyCodeblocks

    #+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
    

Vielen Dank für Ihre Frage!

Hoffe das hat geholfen!

Hinweis: Dieser Code wurde mit den folgenden Versionen von Emacs und Org-Modus getestet.

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)
Melioratus
quelle
6

Verwenden von Suchen und Ersetzen:

M-%Lec Enter - [] Lec Enter

Beachten Sie, dass um das Kontrollkästchen Leerzeichen vorhanden sind, die hier jedoch nicht gut angezeigt werden.

user2699
quelle
Das funktioniert auch sehr gut. Entschuldigung, ich kann nur eine als Antwort markieren, also kann ich nur abstimmen. Vielen Dank.
Nick
3

Im Evil-Modus oder in Spacemacs können Sie dies tun, vorausgesetzt, Sie haben die Standard-Tastenkombinationen nicht geändert:

  1. Bewegen Sie den Cursor im Normalzustand (entspricht dem Normalmodus von Vim) an den Anfang der ersten Zeile Ihrer Liste.

  2. Drücken Sie Ctrl+ v.

  3. Drücken Sie jeinmal für jede verbleibende Zeile in Ihrer Liste. (Alternativ geben Sie die Anzahl der verbleibenden Zeilen in Ihre Liste ein, gefolgt von der jTaste. ZB für Ihr Beispiel : 24j.)

  4. Drücken Sie Shift+ i.

  5. Typ - [ ].

  6. Drücken Sie Esc.

sampablokuper
quelle