Bunun gibi görevleri yerine getirmek için vim global komutunu kullanmayı seviyorum. Bu, satırın başına yineleme eklemek veya metindeki bir sembolü değiştirmek için geçerlidir. Diğer çözümlerden daha karmaşık görünüyor, ancak kullanışlı olduğunda kullanmak için oldukça esnek bir modeldir ve çok fazla düşünmeden kolayca değiştirilebilir.
İlk olarak, aralığınızı seçin (bunu uygulamak istediğiniz satırlar). Genellikle işaretler kullanırım (örneğin mailk satırda ve mbikinci satırda , ancak satır numaralarını veya görsel seçimi de kullanabilirsiniz), sonra aşağıdaki komutun bir modifikasyonunu girin (şu anda kullanım durumunuz için ayarlanmıştır)
:let i=1|'a,'bg/^/s/^/\=i.". "/|let i=i+1
Yapıçözüm
:let i=1
Bu, değişkeni ibaşlangıç değeriyle ayarlar . Genellikle listeler 1 ile başlar, bu yüzden i'yi 1 olarak ayarlıyorum.
|
Çubuk yeni bir komut başlatır
'a,'b
Bu, bir sonraki komutun aralığını ayarlar. Listenizin ilk satırında ve son satırında ayarlanacak aişaretten işarete gidiyorum b.
g/^/
Bu küresel komuttur. Belirli bir normal ifade için dosyayı (veya aralığı) arar ve eşleşen satırların her birinde komut satırının geri kalanını yürütür . "Satır başı" nı arayarak her satırı eşleştiriyorum. Şöyle bir metniniz olsaydı
Item some txt
other text
Item second item
whatever
Item third
ve yalnızca bu etiketleri Itemdiğer satırların önüne koymak ve yoksaymak, yapmak g/Item/veya g/^Item/bunun yerine (değişmez Öğe metnini varsayarak)
s/^/\=i.". "/
Bu, satırın başlangıcını ia ile bitiştirilmiş değerle değiştirmek için normal ifadeyi yürütür .. Genellikle bunu herhangi bir şeye yapabilirsiniz ( Itemörneğin etiketi numarayla değiştirin ).
|let i=i+1
Çubuk yeni bir komut başlatsa da, global tamamlandıktan sonra, global komut içinde çalışacak ikinci bir komut ayarlar. Sonuç, bir isonraki satırın g ile işlenmesinden önce artmamızdır. İşte başka bir esneklik yeri. İ'nin modifikasyonu herhangi bir şey olabilir (2 ile artırın, ne olursa olsun Fibonacci dizisinin bir sonraki elemanını üreten bir işlevi çağırın).
awkmuhtemelen bu iş için bir araçtır. Ama Windows'dayım (iç çekiyorum).