วิธีแปลงบรรทัดเป็นรายการตรวจสอบโหมดองค์กร?


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?
นิค

ต่อไปนี้เป็นคำอธิบายโดยละเอียดเกี่ยวกับวิธีใช้multiple-cursorsสำหรับทำการค้นหาแทนที่ ที่จะใช้กับกรณีนี้ด้วย
Kaushal Modi

ค้นหาเว็บอย่างรวดเร็วนำขึ้นเชื่อมโยงไปยังmultiple-cursorsและหน้าคู่มือในแบบสอบถามแทนที่ หลายสิ่งนี้ได้รับการบันทึกไว้เป็นอย่างดีและเป็นเพียงการค้นเว็บ
แดน

ขอบคุณ. ดูเหมือนว่าจะสูงและซับซ้อนเล็กน้อย ฉันต้องทำความคุ้นเคยกับคำสั่ง / เครื่องมือเหล่านั้น
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 ต่อไปนี้

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-%Lec Enter - [] Lec Enter

โปรดทราบว่ามีช่องว่างรอบ ๆ ช่องทำเครื่องหมายแม้ว่าจะไม่ปรากฏที่นี่


ยังใช้งานได้ดีมาก ขออภัยฉันสามารถทำเครื่องหมายคำตอบเดียวเท่านั้นดังนั้นฉันจึงสามารถลงคะแนนได้เท่านั้น ขอบคุณมาก.
นิค

3

ในโหมด EvilหรือSpacemacsคุณสามารถทำได้โดยสมมติว่าคุณไม่ได้เปลี่ยนการเชื่อมโยงคีย์เริ่มต้น:

  1. ในสถานะปกติ (เทียบเท่ากับโหมดปกติของ Vim) เลื่อนเคอร์เซอร์ไปที่จุดเริ่มต้นของบรรทัดแรกในรายการของคุณ

  2. กด+Ctrlv

  3. กดjหนึ่งครั้งสำหรับแต่ละบรรทัดที่เหลือในรายการของคุณ (หรือมิฉะนั้นให้พิมพ์จำนวนบรรทัดที่เหลือในรายการของคุณตามด้วยjปุ่มเช่นสำหรับตัวอย่างของคุณ: 24j.)

  4. กด+Shifti

  5. ประเภท- [ ].

  6. Escกด

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.