Agregue un número a cada selección en Sublime Text 2, incrementado una vez por selección

190

¿Hay alguna manera de agregar insertar un número que se incremente una vez por cursor en Sublime Text 2?

Ejemplo, con |el cursor:

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

Resultado deseado:

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

¿Esta funcionalidad existe de forma nativa, o hay un complemento que la proporcione?

Michael Robinson
fuente

Respuestas:

330

Recomiendo el complemento Text Pastry . El comando de secuencia numérica es el que necesita.

Prefiero usar el comando Insertar Nums :

Text Pastry tiene una compilación compatible con la sintaxis Insert Nums al proporcionar tres números separados por un espacio:

NMP

N: el índice de inicio.

M representa el tamaño del paso que se agregará al índice para cada selección.

P debe ser> 0 y se utilizará para rellenar el índice con ceros a la izquierda.

aanton
fuente
63
Ridículamente útil.
digitalextremist
1
Text Pastelería: Selección múltiple :: Selección múltiple: Buscar y reemplazar
gfullam
Este complemento me parece perfecto. Pero necesito incrementar de 1 a 5 y repetir varias veces. ¿Cómo haría para hacer esto?
Chucky
44
Descubrí que primero tenía que seleccionar las líneas y usar Ctrl + Shift + L para seleccionar todas las líneas afectadas, luego usar Text Pastry para numerar, youtube.com/watch?v=upEieoTwnjs
Manish
13
Esta solución también funciona en Sublime Text 3. Para mí, el problema principal era que necesita saber cómo abrir la línea de comando Text Pastry (CTRL-ALT-N). Entonces, para obtener números incrementales del 01 al 10, seleccione 10 líneas (shift + clic derecho / arrastre las columnas deseadas), presione CTRL-ALT-N, luego escriba1 1 2
Gus
107

Creo que la única forma de lograr lo que pides es crear tu propio complemento.

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)

Guárdalo en tu Userdirectorio. Luego agregue un acceso directo a su Key Bindings - User:

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

Ahora puede colocar los cursores donde lo necesite:

ingrese la descripción de la imagen aquí

Inserte el número desde el que debe comenzar el contador (en este caso 1):

ingrese la descripción de la imagen aquí

Seleccione el número que escribió ( shift<—):

ingrese la descripción de la imagen aquí

Escriba el acceso directo:

ingrese la descripción de la imagen aquí

Riccardo Marotti
fuente
55
Gran respuesta, muy útil. Lo haré tan pronto como tenga la oportunidad.
Michael Robinson el
He intentado crear este complemento, pero no he podido hacerlo funcionar: colocar varios cursores, insertar 1y presionar mi tecla de acceso rápido no hace nada. ¿Hay algo que necesito para activar un nuevo complemento?
Michael Robinson
1
Sí, hice eso. Mi hotkey es: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, en Key Bindings - User. No hay salida en la consola ST2
Michael Robinson
1
Verifiqué el código tanto en Mac como en Windows, y debería funcionar. Intente mirar la consola después de haber escrito el acceso directo: tal vez haya algún error que pueda ayudar a comprender el problema ( View/Show Console).
Riccardo Marotti
1
Gran complemento! El único inconveniente es que cada número entero en la selección debe tener exactamente el mismo valor.
Gabe Hiemstra