Especialistas em Vim: como encontrar um número dentro de um intervalo com base em dois números? Por exemplo, "777" corresponde a "667: 888"

0

Eu preciso procurar números em um texto com o Vim. Os números que preciso encontrar costumam estar dentro de um intervalo com base em dois números e preciso corresponder a esse intervalo com base em um único número.

Por exemplo, no meu arquivo eu tenho três linhas:

lorem ipsum 2100:2340 dolor

lorem ipsum 17430:17437

53 foo bar

A pesquisa por 2277 corresponderá a 2100:2340 porque é > = 2100 e < = 2340 . A pesquisa por 53 corresponderá a 53 na linha com foo bar .

Os intervalos sempre têm o maior número à direita, por exemplo, 200: 100 não é um intervalo válido neste caso. Haverá vários intervalos na mesma linha.

Como isso pode ser feito com o Vim?

(A razão para não usar outras ferramentas é simplesmente porque eu trabalho com o Vim, eu amo o Vim e preciso usar isso frequentemente combinado com a edição das linhas. Usar algum script de shell não seria eficiente o suficiente)

    
por Bell 25.04.2014 / 23:14

1 resposta

1
  1. Pesquise \<42\>\|\<\d\+:\d\+\> . Isso capturará o número exato ( 42 ) e os intervalos.
  2. Capture a correspondência atual ( expand('<cWORD>') ).
  3. Se não for o número exato, analise o número inicial e final ( split(range, ':') ).
  4. Compare o número exato com o início e o fim para determinar se ele está dentro dele.
  5. Relate o resultado e continue pesquisando.
por 25.04.2014 / 23:37