Мне нужно искать номера в тексте с Vim. Числа, которые мне нужно найти, часто находятся в пределах диапазона, основанного на двух числах, и мне нужно сопоставить этот диапазон на основе одного числа.

Например, в моем файле у меня есть три строки:

Lorem Ipsum 2100:2340 Долор

Lorem Ipsum 17430:17437

53 фу бар

Поиск по 2277 будет соответствовать 2100:2340 потому что это> = 2100 и <= 2340 . Поиск 53 будет совпадать с 53 на строке с foo bar .

Диапазоны всегда имеют большее число справа, например, 200:100 не является допустимым диапазоном в этом случае. Там будет несколько диапазонов на одной линии.

Как это можно сделать с Vim?

(Причина, по которой я не использую другие инструменты, заключается в том, что я просто работаю с Vim, я люблю Vim, и мне нужно использовать это часто в сочетании с редактированием строк. Использование некоторого сценария оболочки не будет достаточно эффективным)

1 ответ1

1
  1. Найдите \<42\>\|\<\d\+:\d\+\> . Это будет захватывать как точное число (42), так и любые диапазоны.
  2. Захватить текущее совпадение (expand('<cWORD>')).
  3. Если это не точное число, проанализируйте начальное и конечное число (split(range, ':')).
  4. Сравните точное число с началом и концом, чтобы определить, попадает ли оно в него.
  5. Сообщить о результате и продолжить поиск.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .