Tambahkan nomor untuk setiap pilihan dalam Sublime Text 2, ditambahkan satu kali per pilihan

190

Apakah ada cara untuk menambahkan masukkan angka yang ditambahkan satu kali per kursor dalam Sublime Text 2?

Contoh, dengan |kursor:

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

Hasil yang diinginkan:

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

Apakah fungsi ini ada secara asli, atau adakah plugin yang menyediakannya?

Michael Robinson
sumber

Jawaban:

331

Saya merekomendasikan plugin Pastry Teks . Perintah Number Sequence adalah yang Anda butuhkan.

Saya lebih suka menggunakan perintah Insert Nums :

Text Pastry memiliki dukungan bawaan untuk sintaks Sisipkan Nums dengan memberikan tiga angka yang dipisahkan oleh satu spasi:

NMP

N: indeks awal.

M mewakili ukuran langkah yang akan ditambahkan ke indeks untuk setiap pilihan.

P harus> 0 dan akan digunakan untuk mengisi indeks dengan nol terkemuka.

aanton
sumber
63
Sangat membantu.
digitalextremist
1
Text Pastry: Multi-pilih :: Multi-pilih: Temukan & Ganti
gfullam
Plugin ini sepertinya cocok untuk saya. Tetapi saya perlu menambah dari 1 menjadi 5 dan mengulangi beberapa kali. Bagaimana saya bisa melakukan ini?
Chucky
4
Saya menemukan bahwa saya harus terlebih dahulu memilih garis dan menggunakan Ctrl + Shift + L untuk memilih semua garis yang terkena dampak, kemudian gunakan Pastry Teks untuk penomoran, youtube.com/watch?v=upEieoTwnjs
Manish
13
Solusi ini juga berfungsi dalam Sublime Text 3. Bagi saya masalah utamanya adalah Anda harus tahu cara membuka baris perintah Text Pastry (CTRL-ALT-N). Jadi, untuk mendapatkan angka yang bertambah dari 01 hingga 10, pilih 10 baris (bergeser + klik kanan / seret kolom yang diinginkan), tekan CTRL-ALT-N, lalu ketik1 1 2
Gus
107

Saya pikir satu-satunya cara untuk mencapai apa yang Anda minta adalah membuat plugin sendiri.

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)

Simpan di Userdirektori Anda . Kemudian tambahkan pintasan ke Key Bindings - User:

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

Sekarang Anda dapat menempatkan kursor di tempat yang Anda butuhkan:

masukkan deskripsi gambar di sini

Masukkan nomor penghitung mulai dari (dalam hal ini 1):

masukkan deskripsi gambar di sini

Pilih nomor yang Anda ketikkan ( shift<—):

masukkan deskripsi gambar di sini

Ketikkan pintasan:

masukkan deskripsi gambar di sini

Riccardo Marotti
sumber
5
Jawaban yang bagus, sangat membantu. Saya akan melakukan ini segera setelah saya mendapat kesempatan.
Michael Robinson
Saya sudah mencoba membuat plugin ini, tetapi belum bisa membuatnya bekerja - menempatkan banyak kursor, memasukkan 1dan menekan hotkey saya tidak melakukan apa-apa. Apakah ada sesuatu yang harus saya lakukan untuk mengaktifkan plugin baru?
Michael Robinson
1
Ya saya memang melakukan itu. Tombol pintas saya adalah: `{" keys ": [" ctrl + alt + i "]," command ":" increment_selection "}`, di Bindings Kunci - Pengguna. Tidak ada output di konsol ST2
Michael Robinson
1
Saya memverifikasi kode pada Mac dan Windows, dan itu harus berfungsi. Coba lihat konsol setelah Anda mengetikkan pintasan: mungkin ada beberapa kesalahan yang dapat membantu untuk memahami masalah ( View/Show Console).
Riccardo Marotti
1
Plugin hebat! Satu-satunya downside adalah bahwa setiap bilangan bulat dalam seleksi harus memiliki nilai yang sama persis.
Gabe Hiemstra