Dodaj liczbę do każdego zaznaczenia w Sublime Text 2, zwiększając jeden raz dla każdego zaznaczenia

190

Czy istnieje sposób dodania wstawienia liczby, która jest zwiększana raz na kursor w Sublime Text 2?

Przykład z |kursorem:

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

Pożądany rezultat:

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

Czy ta funkcjonalność istnieje natywnie, czy jest dostępna wtyczka?

Michael Robinson
źródło

Odpowiedzi:

330

Polecam wtyczkę Ciasto tekstowe . Polecenie Sekwencja liczb jest tym, czego potrzebujesz.

Wolę używać polecenia Wstaw Nums :

Text Pastry ma wbudowaną obsługę składni Insert Nums, podając trzy liczby oddzielone jedną spacją:

NMP

N: indeks początkowy.

M oznacza rozmiar kroku, który zostanie dodany do indeksu dla każdego wyboru.

P musi wynosić> 0 i będzie użyte do uzupełnienia indeksu wiodącymi zerami.

aanton
źródło
63
Śmiesznie pomocna.
digitalextremist,
1
Ciasto tekstowe: Multi-select :: Multi-select: Find & Replace
gfullam
Ta wtyczka wydaje mi się idealna. Ale muszę zwiększyć od 1 do 5 i powtórzyć wiele razy. Jak miałbym to zrobić?
Chucky,
4
Stwierdziłem, że najpierw muszę wybrać linie i użyć Ctrl + Shift + L, aby zaznaczyć wszystkie linie, których dotyczy problem, a następnie użyć ciasta tekstowego do numerowania, youtube.com/watch?v=upEieoTwnjs
Manish
13
To rozwiązanie działa również w Sublime Text 3. Dla mnie głównym problemem było to, że musisz wiedzieć, jak otworzyć wiersz polecenia Text Pastry (CTRL-ALT-N). Tak więc, aby uzyskać przyrostowe liczby od 01 do 10, wybierz 10 linii (Shift + kliknięcie prawym przyciskiem myszy / przeciągnij żądane kolumny), naciśnij CTRL-ALT-N, a następnie wpisz1 1 2
Gus
107

Myślę, że jedynym sposobem na osiągnięcie tego, o co prosisz, jest stworzenie własnej wtyczki.

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)

Zapisz go w swoim Userkatalogu. Następnie dodaj skrót do Key Bindings - User:

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

Teraz możesz umieścić kursory tam, gdzie potrzebujesz:

wprowadź opis zdjęcia tutaj

Wstaw numer, od którego licznik powinien zaczynać (w tym przypadku 1):

wprowadź opis zdjęcia tutaj

Wybierz wpisany numer ( shift<—):

wprowadź opis zdjęcia tutaj

Wpisz skrót:

wprowadź opis zdjęcia tutaj

Riccardo Marotti
źródło
5
Świetna odpowiedź, bardzo pomocna. Zrobię to, jak tylko będę miał szansę.
Michael Robinson
Próbowałem stworzyć tę wtyczkę, ale nie byłem w stanie jej uruchomić - umieszczenie wielu kursorów, wstawienie 1i naciśnięcie klawisza skrótu nic nie robi. Czy muszę coś zrobić, aby aktywować nową wtyczkę?
Michael Robinson
1
Tak, zrobiłem to. Mój skrót to: `{{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, w Key Bindings - User. Brak danych wyjściowych w konsoli ST2
Michael Robinson
1
Kod zweryfikowałem zarówno na komputerach Mac, jak i Windows i powinien działać. Po wpisaniu skrótu spróbuj spojrzeć na konsolę: może jest jakiś błąd, który może pomóc w zrozumieniu problemu ( View/Show Console).
Riccardo Marotti
1
Świetna wtyczka! Jedynym minusem jest to, że każda liczba całkowita w selekcji musi mieć dokładnie taką samą wartość.
Gabe Hiemstra