Як я можу шукати рядок між певними номерами рядків?


15

Це проблема, яка у мене була нещодавно. У мене є файл з кількома сотнями рядків тексту. Як я можу шукати рядок між двома конкретними номерами рядків? Наприклад, наприклад, я хочу шукати між номерами рядків 100 і 325.

Відповіді:


7
:100,235g/foo/#<CR>

потім натисніть, :147<CR>щоб перейти до потрібної лінії.

Ви також можете використовувати :ilist:

:100,235il foo<CR>

Дивіться :help range, :help :globalі :help :ilist.


5

Існує ще один спосіб пошуку між певними рядками.

/%>{linenumber}l\%<{linenumber}{pattern}

Приклад:

/%>199l\%<300lgood

Це буде шукати з рядка 200 до 299 для шаблону "добре".

%>199l - l is for line, >199 denotes the lines greater than 199

2
100GV325G<esc>
/\v%Vpattern
  • 100GV325G<esc>візуально виберіть лінії від 100 до 325, поверніться в normalрежим.
  • /\v%Vpatternвикористовувати :h /\%Vдля обмеження діапазонів пошуку на останню зону зору.

Якщо ваш візерунок містить новий рядок, потрібно додати інший, \%Vщоб обмежити кінець візерунка у зоні зору:

100GV325G<esc>
/\v%Vpattern%V
  • :h /\%V

1

Іноді потрібно шукати заданий символ у межах функції / методу

  void f(bool b)
  {
    b;
    b;
  }

  void g(bool b)
  {
    b;  
    b;  
    b;  
    b;  
  }

Для того , щоб шукати bв f()тільки:

  • перейти до {зf()
  • перейдіть у візуальний режим за допомогою V
  • перейти до кінця f()з "%"
  • перейдіть до рядка exec командою ':'.
  • як тільки ви знаходитесь в командному рядку, il bщоб отримати :'<,'>il b

Після <CR>(введіть) ви отримаєте

b.cpp
  1:   15     b;
  2:   16     b;
Press ENTER or type command to continue

Вітаємо Вас і Вім ! Чим це суттєво відрізняється від відповіді ромаїна?
D. Ben Knoble

Спасибі! По-перше, я вважаю, що люди, які не знайомі з vim та не знайомі з %візуальним режимом, можуть вважати їх корисними. По-друге, немає необхідності чітко вводити діапазон рядків.
dmytro.poliarush

1
Гаразд, тоді я б запропонував пояснити, наскільки їх використання є актуальним і ilist
вводиться
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.