行を組織モードのチェックリストに変換する方法は?


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 14

クイックWeb検索により、Query Replaceへのリンクmultiple-cursorsとマニュアルページが表示されます。このようなものの多くは非常によく文書化されており、Webで検索できます。
ダン

ありがとうございました。高度で少し複雑なようです。それらのコマンド/ツールに慣れる必要があります。
Nick

回答:


23

私が考えることができる最も簡単な方法:

  1. リストを選択します。
  2. ポイントを最初の列に移動します。
  3. C-x r t- [ ]RET

完了です。


1
うわー!長方形の編集はとても簡単ですが強力です!ありがとうございました!
Nick

そのような素晴らしい。チェックリストの変換に非常に役立ちます。
OrgAddict 2017

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

以下は、テキストをチェックリストに変換するもう1つの楽しい方法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

チェックボックスの周りにはスペースがありますが、ここではうまく表示されません。


これも非常にうまく機能します。回答としてマークできるのは1つだけなので、投票しかできません。どうもありがとうございました。
Nick

3

悪モードまたはSpacemacsあなたは、デフォルトのキー割り当てを変更していないと仮定すると、これを行うことができます。

  1. 通常状態(Vimの通常モードと同じ)で、カーソルをリストの最初の行の先頭に移動します。

  2. Ctrl+を押しvます。

  3. リストの残りのjごとに1回押します。(代替的に、リスト内の残りの行数を入力し、続いてキー例:あなたの例のために:。 )。j24j

  4. Shift+を押しiます。

  5. と入力し- [ ]ます。

  6. を押しEscます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.