10
votes

Comment formater "une ligne HTML" comme joli document en sublime?

J'ai un fichier source HTML contenant une seule ligne comme ci-dessous: xxx

, et je veux le formater comme suit: xxx

, j'ai utilisé la commande: Edit-> Line-> Revent, mais cela ne fonctionne pas.


2 commentaires

Vérifiez Stackoverflow.com/Questtions/13143850/...


Pour ST2, il existe plusieurs plug-ins, ce format Code HTML. Je suis à l'aide d'un plug-in appelé "tag": Github.com/sublimetext/tag


3 Réponses :


0
votes

Si c'est pour quelque chose de simple, j'ai pu enregistrer une macro (outils -> record macro) enlever les balises, puis le sauvegarder et réutiliser cette macro. Pas sûr si cela aide tout cependant.


0 commentaires

8
votes

dans le texte sublime, essayez ceci:

  1. mettez en surbrillance le dernier caractère de la première balise: "> "
  2. Utilisez Recherche > Ajoutez-addition suivant ( commande + d sur Mac ou ctrl + D sur PC)

    Vous aurez maintenant toutes les occurrences en surbrillance dans plusieurs sélections, déplacez le caret à la fin de la balise et appuyez sur Retour pour insérer toutes les nouvelles lignes dont vous avez besoin.

    bonne chance


1 commentaires

Je n'étais pas au courant de l'ajout de la commande suivante du tout. Bonne idée!



3
votes

J'étais sous l'impression que sublime a également fourni cette capacité aussi. Quand j'ai découvert que ce n'était pas, j'ai eu l'idée d'utiliser des expressions régulières. Même si les regex sont généralement considérés comme inappropriés pour analyser XML / HTML, j'ai trouvé cette approche pour être acceptable dans ce cas. Le sublime est également considéré comme hautement personnalisable par des plugins, alors je pense que ce serait un moyen.

plugins sublimes

Pour être honnête, j'aurais pu penser à < Code> Tidy ou au moins soupçonnez qu'il doit y avoir des plugins qui traitent avec votre problème. Au lieu de cela, j'ai fini par écrire mon premier plugin sublime. Je l'ai uniquement testé avec votre contribution et votre sortie attendue, qu'il satisfaise, mais il est certain que très loin de travailler de manière fiable. Cependant, je l'affiche ici pour partager ce que j'ai appris et c'est toujours une réponse au problème.

ouvrir un nouveau tampon ( Ctrl + N ) et en choisissant le '< em> nouveau plugin ... 'entrée dans le menu' outils 'génère généreusement un peu' bonjour monde! ' Exemple de plug-in (sous forme de module Python), qui donne un bon modèle pour la mise en œuvre d'un sublime_plugin.textCommand sous-classe. Un TextCommand donne accès à un fichier tampon actif / actuellement ouvert. Comme ses proches fenêtreCommand et ApplicationCommand , il est nécessaire d'écraser une méthode d'exécution.

Le référence officielle de l'API suggère d'apprendre en lisant les exemples de sources distribuées avec les constructions sublimes et située dans packages / par défaut par rapport au chemin de configuration sublime. Vous trouverez d'autres exemples sur le site web . Il y a plus sur Internet.

Traitement du texte sélectionné

Pour obtenir une solution pour votre problème, nous avons principalement besoin d'un accès à un Voir objet qui représente un tampon de texte actif. Heureusement, la sous-classe TextCommand Nous sommes sur le point de mettre en œuvre l'en possèdent un, et nous pouvons le poser facilement pour les régions actuellement sélectionnées et leur contenu de sélection, traiter le texte sélectionné conformément à nos besoins et remplacer le texte sélectionné avec notre préférence. Ensuite.

Pour résumer les opérations de chaîne: Il y a quatre expressions régulières, chacune correspond à l'une des classes d'éléments , , et nœud texte . En supposant que tous nos textes de balisage soient couverts par ceux-ci, nous avons fait chaque ligne de sélection dans des sous-chaînes assorties. Celles-ci sont ensuite réalignées une-ligne. Ayant fait cela, nous appliquons une indentation simple en vous souvenant d'indenter chaque ligne dont le prédécesseur contient une étiquette de démarrage. Les lignes contenant des balises finales sont immédiatement entraînées.

à l'aide du Adresse du groupe Caractéristiques de Python Regex, nous pouvons déterminer l'indentation de chaque ligne et aligner la suivante en conséquence. Ceci, sans autre ADO, il n'entraînera pas une balise en retrait cohérente en interne, mais sans tenir compte des lignes en dehors de la sélection. En étendant la sélection à un élément joint, ou au moins conforme aux niveaux d'indentation des lignes adjacentes, on pourrait facilement améliorer les résultats. Il est toujours possible d'utiliser le Commandes par défaut .

Une autre chose à Prenez soin des clés de liaison à la commande du plug-in et à la contribution des entrées de menu. Il est probablement possible en quelque sorte et le menu par défaut et .Sublime-commandes fichiers dans paquets / défaut au moins donner une idée. Quoi qu'il en soit, voici quelques codes. Il doit être enregistré sous packages / utilisateur / autre.py et peut être appelé à partir de la console sublime python ( ctrl + ` ) comme ceci: vue.run_command ('geavy_indentation') .

code xxx


1 commentaires

C'est une solution appropriée. Malgré cela peut avoir l'air difficile de fonctionner - de manière acuellement peut être complétée en 1 min. Version courte d'une réponse (pour Mac OS): 1. Sélectionnez Outils-> Développeur-> Nouveau plugin 2. Copier et coller le code ci-dessus dans l'espace de travail apparu 3. Sélectionnez Fichier-> Enregistrer sous, Nom It Guess_indentation.py 4. Ouvrez un Onglet avec votre code HTML 5. Sélectionnez Affichage-> Console 6. Tapez la vue.Run_Command ('GUEST_IDEDENTATION') 7. Sélectionnez Edition-> Line-> Revot 8. Upvote ce type pour une solution aussi brillante