Aggiungi un numero a ciascuna selezione in Sublime Text 2, incrementato una volta per selezione


190

C'è un modo per aggiungere inserire un numero che viene incrementato una volta per cursore in Sublime Text 2?

Esempio, con |come cursore:

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

Risultato desiderato:

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

Questa funzionalità esiste in modo nativo o è disponibile un plug-in?

Risposte:


331

Consiglio il plugin Text Pastry . Il comando Sequenza numerica è quello che ti serve.

Preferisco usare il comando Inserisci numeri :

Text Pastry ha un supporto integrato per la sintassi Inserisci numeri fornendo tre numeri separati da uno spazio:

NMP

N: l'indice iniziale.

M rappresenta la dimensione del gradino che verrà aggiunta all'indice per ciascuna selezione.

P deve essere> 0 e verrà utilizzato per riempire l'indice con zeri iniziali.


63
Ridicolmente utile.
digitalextremist,

1
Pasticceria di testo: Selezione multipla :: Selezione multipla: Trova e sostituisci
gfullam,

Questo plugin mi sembra perfetto. Ma devo aumentare da 1 a 5 e ripetere più volte. Come potrei fare per fare questo?
Chucky

4
Ho scoperto che dovevo prima selezionare le righe e usare Ctrl + Maiusc + L per selezionare tutte le righe interessate, quindi utilizzare Text Pastry per la numerazione, youtube.com/watch?v=upEieoTwnjs
Manish

13
Questa soluzione funziona anche in Sublime Text 3. Per me il problema principale era che devi sapere come aprire la riga di comando di Text Pastry (CTRL-ALT-N). Quindi, per ottenere numeri in aumento da 01 a 10, seleziona 10 righe (MAIUSC + clic con il pulsante destro del mouse / trascina le colonne desiderate), premi CTRL-ALT-N, quindi digita1 1 2
Gus

107

Penso che l'unico modo per ottenere ciò che chiedi sia creare il tuo 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)

Salvalo nella tua Userdirectory. Quindi aggiungi un collegamento al tuo Key Bindings - User:

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

Ora puoi posizionare i cursori dove ti serve:

inserisci qui la descrizione dell'immagine

Inserisci il numero da cui dovrebbe iniziare il contatore (in questo caso 1):

inserisci qui la descrizione dell'immagine

Seleziona il numero digitato ( shift<—):

inserisci qui la descrizione dell'immagine

Digita il collegamento:

inserisci qui la descrizione dell'immagine


5
Ottima risposta, molto utile. Lo farò non appena ne avrò la possibilità.
Michael Robinson,

Ho tentato di creare questo plugin, ma non sono riuscito a farlo funzionare: posizionare più cursori, inserire 1e premere il mio tasto di scelta rapida non fa nulla. C'è qualcosa che devo fare per attivare il nuovo plugin?
Michael Robinson,

1
Sì, l'ho fatto. Il mio tasto di scelta rapida è: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, in Key Bindings - User. Nessun output nella console ST2
Michael Robinson,

1
Ho verificato il codice sia su Mac che su Windows e dovrebbe funzionare. Prova a guardare la console dopo aver digitato il collegamento: forse c'è qualche errore che potrebbe aiutare a capire il problema ( View/Show Console).
Riccardo Marotti,

1
Ottimo plugin! L'unico aspetto negativo è che ogni numero intero nella selezione deve avere lo stesso valore esatto.
Gabe Hiemstra,
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.