Bagaimana cara mengubah serangkaian garis menjadi daftar HTML yang berfungsi?

11

Saat ini, ini adalah tugas yang saya temukan jauh lebih mudah dalam sesuatu seperti gedit, karena saya bisa mengganti "\ n" (line break) dengan "</li> \ n <li>" dan kemudian saya memiliki daftar.

Salah satu dari sedikit hal yang sepertinya tidak bisa saya lakukan dengan cepat di Emacs, tetapi sesuatu yang sering saya gunakan.

mattl
sumber

Jawaban:

7

Cara paling langsung untuk melakukan ini adalah dengan

  • Tandai wilayah baris teks untuk menjadi daftar
  • Tekan M-%( query-replace)
  • Ketik C-q C-j RET </li> C-q C-j <li> RET( C-q C-jmenyisipkan karakter baris baru yang dikutip)
  • Tekan !untuk mengganti semua kejadian
Maciej Goszczycki
sumber
saya harus mengubah tag pembuka dan penutup, tetapi ini berfungsi, dan saya pikir saya bisa membuat saya ingat Cq Cj.
mattl
10

Atau dengan mengganti permintaan kueri Anda bisa menggunakan multi-kursor :

masukkan deskripsi gambar di sini

Juga pertimbangkan untuk menggunakan sesuatu seperti ini:

(defun wrap-html-tag (tagName)
  "Add a tag to beginning and ending of current word or text selection."
  (interactive "sEnter tag name: ")
  (let (p1 p2 inputText)
    (if (use-region-p)
        (progn
          (setq p1 (region-beginning) )
          (setq p2 (region-end) )
          )
      (let ((bds (bounds-of-thing-at-point 'symbol)))
        (setq p1 (car bds) )
        (setq p2 (cdr bds) ) ) )

    (goto-char p2)
    (insert "</" tagName ">")
    (goto-char p1)
    (insert "<" tagName ">")
    ))

sumber

welldan97
sumber
Jika Anda menemukan diri Anda melakukan pengeditan semacam ini secara teratur maka saya sangat merekomendasikan paket multi-kursor. Terkadang saya bertanya-tanya bagaimana saya bisa hidup tanpanya.
nispio
@ welldan97 Bagaimana Anda membuat GIF itu? Hanya ingin tahu ...
lunaryorn
@Lunaryorn, melalui LICEcap untuk OS X. Saya pernah mendengar Quicktime bisa lebih baik, meskipun saya belum mencobanya.
welldan97
8

Anda dapat menggunakan query-replace-regexp( C-M-%). Ganti ^\(.*\)$dengan <li>\1</li>.

shosti
sumber
1

Untuk solusi berfitur lengkap, ubah teks Anda menjadi daftar mode-org dan ekspor ke HTML . Awali baris dengan '*', aktif org-mode, dan jalankan org-html-export-to-html.

artagnon
sumber
"Anda benar-benar tidak boleh membuat HTML menggunakan manipulasi teks" - Saya bisa memikirkan banyak alasan orang mungkin ingin melakukan itu (Anda tidak selalu dapat mengontrol input Anda).
shosti
Memulai awal jalur input dengan tanda '*' tidak terlalu banyak, bukan?
artagnon
Saya percaya ekspor mode-org sangat bagus untuk solusi otomatis, tetapi saya tidak berpikir untuk mencegah manipulasi teks dasar untuk pembuatan html sangat membantu.
dgtized
Jika Anda ingin menambahkan itu sebagai jawaban (awali semua baris dengan '*', aktifkan org-mode, lalu ekspor ke HTML) maka itu tidak masalah, tapi saya rasa tidak masuk akal untuk memarahi orang-orang karena ingin "cepat-dan-kotor" Generasi HTML.
shosti
Cukup adil; Saya telah menulis ulang.
artagnon