Я хотел бы перечислить совпадения, когда я ударил:
/example
так что я вижу, где все совпадения сразу.
Я хотел бы перечислить совпадения, когда я ударил:
/example
так что я вижу, где все совпадения сразу.
" put in your ~/.vimrc file
" START search related configs and helps
"
" ignore case when searching
set ignorecase
" search as characters are entered, as you type in more characters, the search is refined
set incsearch
" highlight matches, in normal mode try typing * or even g* when cursor on string
set hlsearch
" yank those cheat commands, in normal mode type q: than p to paste in the opened cmdline
" how-to search for a string recursively
" :grep! "\<doLogErrorMsg\>" . -r
"
" how-to search recursively , omit log and git files
" :vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`
" :vimgrep /srch/ `find . -type f -name '*.pm' -o -name '*.pl'`
"
" how-to search for the "srch" from the current dir recursively in the shell
" vim -c ':vimgrep /srch/ `find . -type f \| grep -v .git \| grep -v .log`'
"
" how-to highlight the after the search the searchable string
" in normmal mode press g* when the cursor is on a matched string
" how-to jump between the search matches - open the quick fix window by
" :copen 22
" how-to to close the quick fix window
" :ccl
" F5 will find the next occurrence after vimgrep
map <F5> :cp!<CR>
" F6 will find the previous occurrence after vimgrep
map <F6> :cn!<CR>
" F8 search for word under the cursor recursively , :copen , to close -> :ccl
nnoremap <F8> :grep! "\<<cword>\>" . -r<CR>:copen 33<CR>
" omit a dir from all searches to perform globally
set wildignore+=**/node_modules/**
" use perl regexes - src: http://andrewradev.com/2011/05/08/vim-regexes/
noremap / /\v
"
" STOP search related configs and helps
:g//p
В более длинной форме:
:global/regular-expression/print
Вы можете оставить шаблон/регулярное выражение, и Vim повторно использует предыдущий поисковый запрос.
Общая информация. Инструмент grep был назван в честь этой последовательности команд.
Вы также можете выполнить:
g/pattern/#
который напечатает желаемый шаблон и номер строки.
если вы хотите просмотреть этот список и быстро перейти между совпадениями, рассмотрите возможность использования
:vimgrep example %
или
:grep example %
Это заполнит "список ошибок" всеми совпадениями, чтобы вы могли использовать :copen
, чтобы перечислить их все в буфере быстрого исправления, нажмите клавишу ввода на определенной строке, чтобы перейти к этому совпадению, или используйте команды типа :cn
и :cp
, чтобы идти назад и вперед.
для подробного объяснения, см. мой ответ на аналогичный вопрос
Только что узнал новый: Location List
!
Введите :lvim foo %
для поиска foo
в текущем файле и введите все соответствия, содержащие foo
в список местоположений.
Введите :lopen
, чтобы открыть список местоположений в окне быстрого исправления, который полностью доступен для навигации, как обычно.
Используйте :lnext
/:lprevious
для перехода по списку (используйте оптимальные варианты tpope/unimpaired)
Другая возможность - использовать команды поиска файлов include.
[I
Здесь перечислены все вхождения слова под курсором. Это может быть больше, чем вам нужно, потому что оно также будет искать любые файлы, которые включены в текущий файл.
Но приятная вещь об этой команде заключается в том, что на экране результатов поиска также отображается количество совпадений в дополнение к номеру строки каждого совпадения.
:help include-search
чтобы увидеть множество вариантов.
Заметка о
:g//p
Это можно уменьшить до
:g//
поскольку, как говорили другие, p (rint) является действием по умолчанию.
Использование :set hlsearch
будет отображать все совпадения по желтому цвету, что позволяет легко сканировать файл для совпадений. Это может быть не то, что вы хотите, но после поиска: g//p даст вам перечисленные совпадения
Чтобы уточнить это... вместо
/example
:g//p
вы также можете напрямую написать
:g/example/p
или, поскольку p (rint) является действием по умолчанию для команды: g (lobal), это можно сократить до
:g/example
И вместо p (rint) возможны другие действия, например. Удалить). См.: help: global
g/pattern
Если у вас есть :set number
, указанная выше команда также отображает номера строк.
Если у вас нет :set number
, то
g/pattern/#
отобразит номера строк.
вы можете получить красивое окно quickfix
со спичками из вашего текущего шаблона поиска
:vim // %
:copen
супер удобно, если вы ранее создали сложный шаблон поиска, используя только /pattern
Изменить: только что выяснилось, это также работает для всех открытых буферов
:bufdo vimgrepadd // %
:copen
Ctrl-f, чтобы отобразить все результаты поиска:
nmap <C-f> :vimgrep /<C-r>//g %<CR> \| !:copen <Enter>