Как я могу найти строку между определенными номерами строк?


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

Добро пожаловать в Ви и Вим ! Чем это существенно отличается от ответа Роменля?
Д. Бен Кнобл

Благодарность! Во-первых, я считаю, что люди, плохо знакомые с vim и не знакомые с %визуальным режимом, могут найти их полезными. Во-вторых, нет необходимости явно вводить диапазон строк.
dmytro.poliarush

1
Хорошо, тогда я бы предложил объяснить, как их использование уместно и ключи отilist
Д. Бен Нобл
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.