Saya suka menggunakan perintah global vim untuk menyelesaikan tugas-tugas seperti ini. Ini berlaku untuk menambahkan iterasi ke awal baris atau memodifikasi simbol dalam teks. Ini terlihat lebih rumit daripada solusi lain, tetapi merupakan pola yang cukup fleksibel untuk digunakan saat Anda menggunakannya, dan mudah untuk dimodifikasi tanpa banyak pemikiran.
Pertama, pilih rentang Anda (baris mana yang ingin Anda terapkan ini). Saya biasanya menggunakan tanda (misalnya mapada baris pertama dan mbpada baris kedua, tetapi Anda juga dapat menggunakan nomor baris atau pemilihan visual), kemudian masukkan modifikasi dari perintah berikut (saat ini di-tweak untuk use case Anda)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Dekonstruksi
:let i=1
Ini mengatur variabel idengan nilai awal. Biasanya daftar dimulai dengan 1, jadi saya mengatur i ke 1.
|
Bilah memulai perintah baru
'a,'b
Ini mengatur rentang perintah selanjutnya. Saya beralih dari satu tanda ake tanda lainnya b, yang akan ditetapkan pada baris pertama dan baris terakhir dari daftar Anda.
g/^/
Ini adalah perintah global. Itu mencari file (atau rentang) untuk ekspresi reguler yang diberikan, dan akan mengeksekusi sisa baris perintah pada setiap baris yang cocok. Saya mencocokkan setiap baris dengan mencari "awal baris". Jika Anda memiliki teks suka
Item some txt
other text
Item second item
whatever
Item third
dan hanya ingin meletakkan label ini di depan Itemdan mengabaikan baris lain, lakukan g/Item/atau g/^Item/sebaliknya (dengan asumsi teks Item literal)
s/^/\=i.". "/
Ini mengeksekusi ekspresi reguler untuk mengganti awal baris dengan nilai idigabungkan dengan a .. Secara umum Anda dapat melakukan ini untuk apa saja (ganti label Itemdengan nomor, misalnya).
|let i=i+1
Meskipun bilah memulai perintah baru, bilah ini mengatur perintah kedua untuk dijalankan di dalam perintah global, alih-alih setelah global selesai. Hasilnya adalah kita bertambah isebelum baris berikutnya diproses oleh g. Di sini ada tempat lain untuk fleksibilitas. Modifikasi i dapat berupa apa saja (selisih 2, sebut fungsi yang menghasilkan elemen berikutnya dari deret Fibonacci, apa pun).
awkmungkin alat untuk pekerjaan ini. Tapi saya di Windows (menghela napas).