Comment convertir une série de lignes en une liste HTML fonctionnelle?

11

En ce moment, c'est une tâche que je trouve beaucoup plus facile dans quelque chose comme gedit, car je peux simplement remplacer "\ n" (le saut de ligne) par "</li> \ n <li>" et puis j'ai une liste.

L'une des rares petites choses que je ne semble pas pouvoir utiliser rapidement dans Emacs, mais quelque chose que j'utilise beaucoup.

mattl
la source

Réponses:

7

La façon la plus directe de procéder serait de

  • Marquez la région des lignes de texte pour devenir une liste
  • Appuyez sur M-%( query-replace)
  • Type C-q C-j RET </li> C-q C-j <li> RET( C-q C-jinsère un caractère de nouvelle ligne entre guillemets)
  • Appuyez !pour remplacer toutes les occurrences
Maciej Goszczycki
la source
j'ai dû changer autour des balises d'ouverture et de fermeture, mais cela fonctionne, et je pense que je peux me rappeler Cq Cj.
mattl
10

Alternativement, pour remplacer la requête, vous pouvez utiliser plusieurs curseurs :

entrez la description de l'image ici

Pensez également à utiliser quelque chose comme ceci:

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

la source

welldan97
la source
Si vous vous trouvez en train de faire ce type d'édition régulièrement, je recommande fortement le package à curseurs multiples. Parfois, je me demande comment je me suis débrouillé sans ça.
nispio
@ welldan97 Comment avez-vous créé ce GIF? Juste curieux…
lunaryorn
@lunaryorn, via LICEcap pour OS X. J'ai entendu dire que Quicktime pouvait être meilleur, mais je n'ai pas encore essayé.
welldan97
8

Vous pouvez utiliser query-replace-regexp( C-M-%). Remplacez ^\(.*\)$par <li>\1</li>.

shosti
la source
1

Pour une solution complète, convertissez votre texte en liste en mode organisation et exportez-le en HTML . Préfixez les lignes avec '*', actives org-modeet exécutées org-html-export-to-html.

artagnon
la source
"Vous ne devriez vraiment pas générer de HTML en utilisant des manipulations de texte" - je peux penser à de nombreuses raisons pour lesquelles on pourrait vouloir faire ça (vous ne pouvez pas toujours contrôler votre entrée).
shosti
Préfixer les lignes d'entrée avec un «*» ne demande pas trop, n'est-ce pas?
artagnon
Je pense que l'exportation en mode org est excellente pour une solution automatisée, mais je ne pense pas que décourager la manipulation de texte de base pour la génération html soit utile.
dgtized
Si vous voulez ajouter cela comme réponse (préfixez toutes les lignes avec '*', activez org-mode, puis exportez au format HTML) alors ça va, mais je ne pense pas qu'il soit logique de gronder les gens pour vouloir "rapide et sale" Génération HTML.
shosti
C'est suffisant; Je l'ai reformulé.
artagnon