Come convertire una serie di linee in un elenco HTML funzionante?


11

In questo momento, questo è un compito che trovo molto più facile in qualcosa come gedit, perché posso semplicemente sostituire "\ n" (l'interruzione di riga) con "</li> \ n <li>" e quindi ho un elenco.

Una delle poche piccole cose che non riesco a trovare rapidamente in Emacs, ma qualcosa che uso molto.

Risposte:


7

Il modo più diretto per farlo sarebbe

  • Contrassegna la regione delle righe di testo per diventare un elenco
  • Premere M-%( query-replace)
  • Tipo C-q C-j RET </li> C-q C-j <li> RET( C-q C-jinserisce un carattere di nuova riga tra virgolette)
  • Premere !per sostituire tutte le occorrenze

ho dovuto cambiare i tag di apertura e chiusura, ma questo funziona e penso di potermi ricordare Cq Cj.
mattl,

10

In alternativa alla query di sostituzione puoi andare con più cursori :

inserisci qui la descrizione dell'immagine

Considera anche di usare qualcosa del genere:

(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 ">")
    ))

fonte


Se ti ritrovi a fare questo tipo di modifica su base regolare, ti consiglio vivamente il pacchetto a cursori multipli. A volte mi chiedo come sia mai andata d'accordo senza di essa.
nispio,

@ welldan97 Come hai creato quella GIF? Solo curioso ...
lunaryorn,

@lunaryorn, tramite LICEcap per OS X. Ho sentito che Quicktime può essere migliore, anche se non ci ho ancora provato.
welldan97,

8

Puoi usare query-replace-regexp( C-M-%). Sostituisci ^\(.*\)$con <li>\1</li>.


1

Per una soluzione completa, converti il ​​tuo testo in un elenco in modalità organizzazione ed esporta in HTML . Prefisso linee con '*', attivo org-modeed esegui org-html-export-to-html.


"Non dovresti davvero generare HTML usando manipolazioni di testo" - Posso pensare a molte ragioni per cui potresti voler farlo (non puoi sempre controllare i tuoi input).
shosti,

Il prefisso delle righe di input con un '*' non richiede troppo, vero?
artagnon,

Credo che l'esportazione in modalità org sia eccellente per una soluzione automatizzata, ma non credo che scoraggiare la manipolazione di base del testo per la generazione di html sia utile.
dgtized

Se vuoi aggiungerlo come risposta (prefiggi tutte le righe con '*', attiva org-mode, quindi esporta in HTML), allora va bene, ma non penso che abbia senso sgridare le persone che vogliono "sporcizia" Generazione HTML.
shosti,

Giusto; L'ho riformulato.
artagnon,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.