2013-05-29 2 views
5

Большинство текстовых редакторов IDE будут, когда вы ищете определенную строку, отображаете информацию типа «это совпадение 3 из 7». Есть ли способ заставить Vim отображать эту информацию при переходе к совпадению с использованием n и N?Показание количества совпадений во время инкрементного поиска

+0

Я не думаю, что «инкрементный поиск» означает, что вы думаете, что это означает. – romainl

+0

@romainl Да, я думаю, ты прав. Хотя было бы неплохо, если бы я мог видеть «матч 3 из 7», даже когда я набираю строку поиска. – bdesham

+1

@bdesham Для того чтобы поиск был как инкрементным ('set incsearch'), так и отображать количество совпадений, ему приходилось подсчитывать их каждый раз, когда вы добавляете символ в поиск. Это может оказаться очень ресурсоемким, так что, вероятно, это не очень хорошая идея.Более того, если вы используете такой плагин, как IndexedSearch, его невозможно отобразить в командной строке, которая уже закрыта '/ search'. Вам нужно будет интегрировать его с вашей статусной линией или чем-то еще. В общем, я бы сказал, что проще просто перейти на IndexedSearch и нажать '', как вы знаете, что искать :-) – timss

ответ

6

From Show Count of Matches in Vim:

То, что вы хотите, вероятно, плагин IndexedSearch.
При выполнении /set он будет отображать количество, а поисковый запрос в командной строке:

Match 5 of 81 /set/ 

Установите его, используя ваш любимый менеджер плагинов. Я рекомендую Vundle.

+0

Это именно то, что я хотел, спасибо! – bdesham

2

Самый распространенный способ - использовать флаг n с командой подстановки.

:%s/set//gn 

Или используйте текущий шаблон через :%s//gn. Это дает вам некоторые отзывы, которые вы просили.

Однако я предпочитаю использовать :vimgrep и список быстрых ошибок. Поиск вашего шаблона с помощью:

:vimgrep/set/ % 

Этот поиск текущего файла, %, и добавляет спички к списку QuickFix. Затем вы можете переместить список быстрого списка через :cnext или :cprevious. После перемещения по списку быстрого списка текст будет отображаться внизу, показывая что-то вроде этого (1 of 5). С помощью команды :copen откроется окно с результатами быстрого устранения. Перейдите к шаблону, нажав <cr> на элемент быстрого исправления.

Есть некоторые недостатки в использовании :vimgrep.

  • :vimgrep от Vim 7.3 не поддерживает использование текущего шаблона т.е. не :vimgrep// %. Вместо этого нужно использовать <c-r>/, чтобы вытащить регистр шаблонов поиска и, возможно, избежать любых /.
  • Использование % для текущего файла означает, что файл должен существовать, поэтому вы не можете искать буфер нуля.
  • :cnext, :cprev, и друзья довольно многословные по сравнению с красивыми и простыми n и N. Добавление приятных сопоставлений может преодолеть это. Я использую [q и ]q от великолепного плагина unimpaired Тима Поупа.

Для получения дополнительной справки смотрите:

:h :s_flags 
:h :vimg 
:h c_CTRL-R 
:h quote/ 
:h quickfix 
:h c_% 
Смежные вопросы