Добавьте число к каждому выделению в Sublime Text 2, увеличивая один раз за выделение

190

Есть ли способ добавить вставить номер, который увеличивается на один курсор в Sublime Text 2?

Пример с |курсором:

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

Желаемый результат:

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

Эта функциональность существует изначально или существует плагин, обеспечивающий ее?

Майкл Робинсон
источник

Ответы:

331

Я рекомендую плагин Text Pastry . Команда Number Sequence - это та, которая вам нужна.

Я предпочитаю использовать команду Insert Nums :

Text Pastry имеет встроенную поддержку синтаксиса Insert Nums, предоставляя три числа, разделенные одним пробелом:

NMP

N: начальный индекс.

M представляет размер шага, который будет добавляться к индексу для каждого выбора.

P должен быть> 0 и будет использоваться для заполнения индекса начальными нулями.

aanton
источник
63
Смешно полезно.
digitalextremist
1
Текстовая выпечка: Multi-select :: Multi-select: Найти и заменить
gfullam
Этот плагин кажется идеальным для меня. Но мне нужно увеличить от 1 до 5 и повторить несколько раз. Как бы я поступил так?
Чаки,
4
Я обнаружил, что мне сначала нужно выбрать линии и использовать Ctrl + Shift + L, чтобы выделить все затронутые строки, а затем использовать Text Pastry для нумерации, youtube.com/watch?v=upEieoTwnjs
Manish
13
Это решение работает и в Sublime Text 3. Для меня основной проблемой было то, что вам нужно знать, как открыть командную строку Text Pastry (CTRL-ALT-N). Итак, чтобы получить приращения чисел от 01 до 10, выберите 10 строк (Shift + щелчок правой кнопкой мыши / перетащите нужные столбцы), нажмите CTRL-ALT-N, затем введите1 1 2
Gus
107

Я думаю, что единственный способ достичь того, что вы просите, - это создать свой собственный плагин.

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)

Сохраните его в своем Userкаталоге. Затем добавьте ярлык к вашемуKey Bindings - User :

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

Теперь вы можете разместить курсоры там, где вам нужно:

введите описание изображения здесь

Введите число, с которого должен начинаться счетчик (в данном случае 1):

введите описание изображения здесь

Выберите номер, который вы ввели (shift<— ):

введите описание изображения здесь

Введите ярлык:

введите описание изображения здесь

Риккардо Маротти
источник
5
Отличный ответ, очень полезно. Я сделаю это, как только у меня будет шанс.
Майкл Робинсон
Я пытался создать этот плагин, но не смог заставить его работать - установка нескольких курсоров, вставка 1и нажатие моей горячей клавиши ничего не делают. Есть ли что-то, что мне нужно, чтобы активировать новый плагин?
Майкл Робинсон
1
Да, я сделал это. Моя горячая клавиша: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, в привязках клавиш - пользователь. Нет вывода в консоль ST2
Майкл Робинсон
1
Я проверил код на Mac и Windows, и он должен работать. Попробуйте посмотреть на консоль после того, как вы набрали ярлык: возможно, есть какая-то ошибка, которая может помочь понять проблему ( View/Show Console).
Риккардо Маротти
1
Отличный плагин! Единственным недостатком является то, что каждое целое число в выборе должно иметь одинаковое значение.
Гейб Химстра