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?

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.


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


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.