Vim uzmanları: İki sayıya dayanan bir aralıkta bir sayı nasıl bulunur? “777”, “667: 888” ile eşleşiyor


0

Vim ile bir metindeki sayıları aramam gerekiyor. Bulmam gereken numaralar genellikle iki sayıya dayanan bir aralık içindedir ve bu aralığı tek bir numaraya göre eşleştirmem gerekir.

Örneğin, dosyamda üç satırım var:

lorem ipsum 2100: 2340 dolor

lorem ipsum 17430: 17437

53 foo bar

Aranıyor, çünkü> = ve <= 2277eşleşir . Aramakla satırında eşleşir .2100:2340210023405353foo bar

Aralıklar her zaman sağda daha büyük bir sayıya sahiptir, örneğin 200: 100 bu durumda geçerli bir aralık değildir. Aynı satırda birkaç aralık olacaktır.

Bu Vim ile nasıl yapılabilir?

(Başka araçlar kullanmamamın nedeni, basitçe Vim ile çalıştığım, Vim'i seviyorum ve bunu sık sık satırları düzenlemekle birlikte kullanmam gerekiyor. Kabuk komut dosyası kullanmak yeterince etkili olmaz)

Yanıtlar:


1
  1. Ara \<42\>\|\<\d\+:\d\+\>. Bu hem kesin sayıyı ( 42) hem de tüm aralıkları yakalayacaktır .
  2. Geçerli eşleşmeyi tut ( expand('<cWORD>')).
  3. Tam sayı değilse, başlangıç ​​ve bitiş numarasına ( split(range, ':')) ayrılın .
  4. İçine düşüp düşmediğini belirlemek için tam sayıyı başlangıç ​​ve bitiş ile karşılaştırın.
  5. Sonucu bildir ve aramaya devam et.
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.