Ajoutez un numéro à chaque sélection dans Sublime Text 2, incrémenté une fois par sélection


190

Existe-t-il un moyen d'ajouter insérer un nombre qui est incrémenté une fois par curseur dans Sublime Text 2?

Exemple, avec |comme curseur:

Lorem ipsum dolor sit amet, |
vehicula sed, mauris nam eget| 
neque a pede nullam, ducimus adipiscing, 
vestibulum pellentesque pellentesque laoreet faucibus.|

Résultat désiré:

Lorem ipsum dolor sit amet, 1|
vehicula sed, mauris nam eget2| 
neque a pede nullam, ducimus adipiscing, 
vestibulum pellentesque pellentesque laoreet faucibus.3|

Cette fonctionnalité existe-t-elle nativement ou existe-t-il un plugin qui la fournit?

Réponses:


331

Je recommande le plugin Text Pastry . La commande Number Sequence est celle dont vous avez besoin.

Je préfère utiliser la commande Insérer des nombres :

Text Pastry prend en charge la syntaxe Insert Nums en fournissant trois nombres séparés par un espace:

NMP

N: l'index de départ.

M représente la taille de pas qui sera ajoutée à l'index pour chaque sélection.

P doit être> 0 et sera utilisé pour compléter l'index avec des zéros non significatifs.


63
Ridiculement utile.
digitalextremist

1
Text Pastry: Multi-select :: Multi-select: Find & Replace
gfullam

Ce plugin me semble parfait. Mais je dois augmenter de 1 à 5 et répéter plusieurs fois. Comment pourrais-je procéder?
Chucky

4
J'ai trouvé que je devais d'abord sélectionner les lignes et utiliser Ctrl + Maj + L pour sélectionner toutes les lignes affectées, puis utiliser Text Pastry pour la numérotation, youtube.com/watch?v=upEieoTwnjs
Manish

13
Cette solution fonctionne également dans Sublime Text 3. Pour moi, le problème principal était que vous devez savoir comment ouvrir la ligne de commande de la pâtisserie de texte (CTRL-ALT-N). Donc, pour obtenir des nombres incrémentiels de 01 à 10, sélectionnez 10 lignes (Maj + clic droit / faites glisser les colonnes souhaitées), appuyez sur CTRL-ALT-N, puis tapez1 1 2
Gus

107

Je pense que le seul moyen de réaliser ce que vous demandez est de créer votre propre plugin.

Tools/New Plugin...:

import sublime_plugin


class IncrementSelectionCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        start_value = int(self.view.substr(self.view.sel()[0]))

        counter = 0
        for selection in self.view.sel():
            self.view.insert(edit, selection.begin(), str(start_value + counter))
            counter = counter + 1

        for selection in self.view.sel():
            self.view.erase(edit, selection)

Enregistrez-le dans votre Userrépertoire. Ajoutez ensuite un raccourci vers votre Key Bindings - User:

{ "keys": ["YOUR_SHORTCUT"], "command": "increment_selection" }

Vous pouvez maintenant placer les curseurs là où vous en avez besoin:

entrez la description de l'image ici

Insérez le numéro à partir duquel le compteur doit commencer (dans ce cas 1):

entrez la description de l'image ici

Sélectionnez le numéro que vous avez saisi ( shift<—):

entrez la description de l'image ici

Tapez le raccourci:

entrez la description de l'image ici


5
Excellente réponse, très utile. Je le ferai dès que j'en aurai l'occasion.
Michael Robinson

J'ai essayé de créer ce plugin, mais je n'ai pas été en mesure de le faire fonctionner - placer plusieurs curseurs, insérer 1et appuyer sur mon raccourci clavier ne fait rien. Dois-je faire quelque chose pour activer un nouveau plugin?
Michael Robinson

1
Oui, je l'ai fait. Mon raccourci clavier est: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, dans Key Bindings - User. Pas de sortie dans la console ST2
Michael Robinson

1
J'ai vérifié le code à la fois sur Mac et Windows, et cela devrait fonctionner. Essayez de regarder la console après avoir tapé le raccourci: il y a peut-être une erreur qui pourrait aider à comprendre le problème ( View/Show Console).
Riccardo Marotti

1
Super plugin! Le seul inconvénient est que chaque entier de la sélection doit avoir exactement la même valeur.
Gabe Hiemstra
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.