Satırları bir kuruluş modu kontrol listesine nasıl dönüştürebilirim?


12

Aşağıdaki listeye sahip olduğumu varsayalım. Bir kontrol listesine dönüştürmek istiyorum.

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

Nasıl yapılır?

(Bunu kbd-macro kullanarak yaptım. Acaba orgbunu yapacak bir komut var mı?)


Birçok yol vardır ve çabukluk özneldir. multiple cursorsVeya kullanırdım query-search-replace. Kontrol listesine dönüştürerek, satırların başına basitçe, yani [ ]?
Kaushal Modi

Evet. Kısaca nasıl kullanılacağını gösterir misin multiple cursorsya query-search-replace?
Nick

İşte arama değiştirme için nasıl kullanılacağına dair ayrıntılı bir açıklamamultiple-cursors . Bu da bu durum için geçerlidir.
Kaushal Modi

Hızlı web aramaları multiple-cursors, Sorgu Değiştirme'deki bağlantıları ve manuel sayfayı getirir . Bunların çoğu gerçekten iyi belgelenmiştir ve sadece bir web araması uzaklıktadır.
Dan

Teşekkür ederim. Gelişmiş ve biraz karmaşık görünüyor. Bu komutlara / araçlara aşina olmam gerekiyor.
Nick

Yanıtlar:


23

Düşünebileceğim en basit yol:

  1. Listeyi seçin.
  2. Noktayı ilk sütuna taşıyın.
  3. C-x r t- [ ]RET

Bitirdiniz.


1
Vaov! Dikdörtgen düzenleme çok basit ama güçlü! Teşekkür ederim!
Nick

Harika. Kontrol listelerinin dönüştürülmesi için çok kullanışlıdır.
OrgAddict

11

İlk olarak, açıklık için bazı anlambilim. Olarak org-mode, bir düz bir liste ya sahip başlangıç ya, düzenli veya düzensiz bir -, +ya da *bir biri ile (sırasız) veya bir sayı ve ardından .ya da )(sıralı için). Yani: örneğinizde tanımladığınız "liste" henüz bir org-modeliste değildir , çünkü bu madde işaretlerinin hiçbiriyle başlamamaktadır.

İkinci olarak, "kontrol listesi" Şunu tarafından tahmin onay kutularını o org-modesade listelerde kullanımları olduğu gibi:

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

Seçili bölgedeki tüm satırları onay kutularıyla sırasız bir listeye dönüştürecek çok basit bir işlev var (kapsamlı olarak test edilmemiştir, ancak örneğiniz üzerinde çalışır):

(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

Aşağıda, metni bir kontrol listesine dönüştürmenin eğlenceli bir yoludur org-mode.

Metni Onay Kutuları Listesine Dönüştürmek için Kuruluş Modu Kod Bloklarını Kullanma

Not: Sonuçları oluşturmak için C-c C-cimleç kod bloğunun içindeyken kullanın .
Sonra yesistendiğinde cevap verin .

  1. Listenizi adlandırılmış bir dinamik bloğun içine sarın

    #+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-modeEn sevdiğiniz programlama dilinde bir kod bloğu yazın .

    Örnek 1 - elispKod Bloğunu Kullanma

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

    Örnek 2 - perlKod Bloğunu Kullanma

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

    Örnek 3 - bashKod Bloğunu Kullanma

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

    Örnek 4 - pythonKod Bloğunu Kullanma

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

    Örnek 5 - rubyKod Bloğunu Kullanma

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

Sorunuzu sorduğunuz için teşekkürler!

Umut etmek bu yardım etmek!

Not: Bu kod aşağıdaki emacs ve org-mode sürümleri kullanılarak test edilmiştir.

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

Ara ve değiştir özelliğini kullanma:

M-%Lec Enter - [] Lec Enter

Burada iyi görünmemelerine rağmen, onay kutusunun çevresinde boşluklar olduğunu unutmayın.


Bu da çok iyi çalışıyor. Üzgünüm cevap olarak sadece birini işaretleyebilirim, bu yüzden sadece oy verebilirim. Çok teşekkür ederim.
Nick

3

Gelen Evil modunda veya Spacemacs Eğer varsayılan anahtar bağları değişmemiştir varsayarak bunu yapabilirsiniz:

  1. Normal durumda (Vim Normal moduna eşdeğer), imleci listenizdeki ilk satırın başına götürün .

  2. Ctrl+ Tuşuna basın v.

  3. Listenizde kalanj her satır için bir kez basın . (Alternatif olarak, ardından da listesindeki kalan satır sayısını tip anahtar Örn örnek için:. ).j24j

  4. Shift+ Tuşuna basın i.

  5. Tür - [ ].

  6. Düğmesine basın Esc.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.