Adicione um número a cada seleção no Sublime Text 2, incrementado uma vez por seleção

190

Existe uma maneira de adicionar inserir um número que é incrementado uma vez por cursor no Sublime Text 2?

Exemplo, com |como o cursor:

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

Resultado desejado:

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

Essa funcionalidade existe nativamente ou existe um plugin para isso?

Michael Robinson
fonte

Respostas:

330

Eu recomendo o plugin Text Pastry . O comando Sequência numérica é o que você precisa.

Eu prefiro usar o comando Inserir Nums :

A Text Pastry tem uma compilação no suporte à sintaxe Insert Nums, fornecendo três números separados por um espaço:

NMP

N: o índice inicial.

M representa o tamanho da etapa que será adicionada ao índice para cada seleção.

P deve ser> 0 e será usado para preencher o índice com zeros à esquerda.

aanton
fonte
63
Ridiculamente útil.
precisa
1
Pastelaria de texto: Seleção múltipla :: Seleção múltipla: Localizar e substituir
gfullam
Este plugin parece perfeito para mim. Mas preciso incrementar de 1 a 5 e repetir várias vezes. Como eu faria isso?
Chucky
4
Descobri que tinha que selecionar primeiro as linhas e usar Ctrl + Shift + L para selecionar todas as linhas afetadas e, em seguida, usar Text Pastry para numerar, youtube.com/watch?v=upEieoTwnjs
Manish
13
Esta solução também funciona no Sublime Text 3. Para mim, o principal problema era que você precisava saber como abrir a linha de comando Text Pastry (CTRL-ALT-N). Portanto, para obter números incrementados de 01 a 10, selecione 10 linhas (Shift + clique com o botão direito do mouse / arraste as colunas desejadas), pressione CTRL-ALT-Ne digite:1 1 2
Gus
107

Eu acho que a única maneira de conseguir o que você pede é criar seu próprio 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)

Salve-o em seu Userdiretório. Em seguida, adicione um atalho para o seu Key Bindings - User:

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

Agora você pode colocar os cursores onde precisar:

insira a descrição da imagem aqui

Insira o número do qual o contador deve começar (neste caso 1):

insira a descrição da imagem aqui

Selecione o número digitado ( shift<—):

insira a descrição da imagem aqui

Digite o atalho:

insira a descrição da imagem aqui

Riccardo Marotti
fonte
5
Ótima resposta, muito útil. Farei isso assim que tiver uma chance.
Michael Robinson
Eu tentei fazer este plugin, mas não consegui fazê-lo funcionar - colocar vários cursores, inserir 1e pressionar minha tecla de atalho não faz nada. Preciso fazer algo para ativar o novo plug-in?
Michael Robinson
1
Sim, eu fiz isso. Minha tecla de atalho é: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, em Key Bindings - User. Nenhuma saída no console ST2
Michael Robinson
1
Eu verifiquei o código no Mac e no Windows e ele deve funcionar. Tente olhar para o console depois de digitar o atalho: talvez haja algum erro que possa ajudar a entender o problema ( View/Show Console).
Riccardo Marotti 30/01
1
Ótimo plugin! A única desvantagem é que todo número inteiro na seleção precisa ter exatamente o mesmo valor.
Gabe Hiemstra