Her çift / tek satıra numaralandırılmış metin ekleyin


1

Vim'de şu metne sahibim:


Door

Chair

Table

Uganda

Ve her tuhaf satıra numaralandırılmış metin eklemek istiyorum;

>item1
Door
>item2
Chair
>item3
Table
>item4
Uganda

Vim'de bu mümkün mü?


Evet, bu mümkün. (Ne denedin?)
Ingo Karkat

Bu ve çalıştı;) :let i = 1 | g/^$/execute "normal i>item" . i | let i = i + 1
Mehdi Nellen

Soruyu sormadan önce demek istedim :-) Denemelerinizi göstererek ve hangi bölümlerde zorluk yaşadığınızı açıklayarak, yetkinliğinizi daha iyi anlar ve daha kesin bir cevap verebiliriz. Olduğu gibi, sadece bir gereksinim yayınlamış gibi görünüyorsun ve birisinin kodunu senin için yazmasını istiyorsun.
Ingo Karkat

Evet biliyorum. Ama bir girişimde bulunmadan önce mümkün olup olmadığını sordum. Çok tembel sence de öyle değil mi? Her neyse, insanlar bu soruyu google'la yaptıktan sonra bu sayfaya gelirlerse ve kötü girişimlerimden şaşırtılmadan doğrudan sorunu / cevabı okuyabilirler :)
Mehdi Nellen

Yanıtlar:


4

Kulağa gelince sezgisel olarak artan bu komutu deneyebilirsiniz. i her maçta:

:let i = 1 | g/^$/execute "normal i>item" . i | let i = i + 1

1

İşte bunu yapmak için bir vimscript:

:for s:i in range(1, line("$") / 2)
:  execute "normal " . eval(s:i * 2 - 1) . "gg"
:  execute "normal a" . ">item" . s:i
:endfor
  • Üzerinde döngü yarım dosyadaki satırların (çünkü biz sadece tek olanları istiyoruz).
  • Kullanarak uygun satır numarasına gidin (madde numarası * 2 - 1 sonraki sıradaki değeri verir) gg.
  • eklemek >itemX X, madde numarası olan satıra.

Bunu doğrudan vim komut satırına girebilir ya da bir dosyaya yerleştirip ardından :source <filename>.

Alternatif olarak, bunu .vimrc'nize bir fonksiyon olarak ekleyebilirsiniz ve :call <funcname()>.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.