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 ma
ilk satırda ve mb
ikinci 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 i
baş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 a
iş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 Item
diğ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ı i
a 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 i
sonraki 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).
awk
muhtemelen bu iş için bir araçtır. Ama Windows'dayım (iç çekiyorum).