[search] Vim의 검색 결과를 어떻게 나열 할 수 있습니까?

다음을 치면 일치 항목을 나열하고 싶습니다.

/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은 이전 검색어를 재사용합니다.

하찮은 일이 : 그렙 도구는이 명령 시퀀스의 이름을 따서 명명되었다.


답변

다음을 수행 할 수도 있습니다.

g/pattern/#

원하는 패턴과 줄 번호를 인쇄합니다.


답변

이 목록을보고 경기 사이를 빠르게 이동하려면

:vimgrep example %

또는

:grep example %

이렇게하면 “오류 목록”이 모든 일치 항목으로 채워 :copen지므로 빠른 수정 버퍼에 모두 나열하는 데 사용할 수 있고 특정 줄에서 Enter 키를 눌러 해당 일치 항목 으로 이동 하거나 :cn및 같은 명령을 사용 :cp하여 앞뒤로 이동할 수 있습니다.

자세한 설명 은 비슷한 질문에 대한 내 답변을 참조하십시오.


답변

방금 새로운 것을 배웠습니다 : Location List!
입력 :lvim foo %을 검색 foo현재 파일과 포함 된 모든 일치 입력 foo위치 목록을 . 평상시처럼 완전히 탐색 할 수있는 빠른 수정 창에서 위치 목록을 열려면
입력 :lopen합니다. / to를
사용 하여 목록을 살펴 봅니다 ( 최상의 경험을 위해 tpope / unimpaired 매핑 사용 ).:lnext:lprevious


답변

또 다른 가능성은 포함 파일 검색 명령을 사용하는 것입니다.

[I

그러면 커서 아래에있는 모든 단어가 나열됩니다. 현재 파일에 포함 된 모든 파일도 검색하므로 필요한 것보다 많을 수 있습니다.

그러나이 명령의 좋은 점은 검색 결과 디스플레이에 각 일치 항목의 행 번호와 함께 일치 항목 수도 표시된다는 것입니다.

:help include-search

많은 변형을 볼 수 있습니다.

에 대한 참고 사항

:g//p

이것은 더 줄일 수 있습니다

:g//

다른 사람들이 말했듯이 p (rint)가 기본 작업이기 때문입니다.


답변

quickfix현재 검색 패턴과 일치 하는 멋진 창을 얻을 수 있습니다.

:vim // %
:copen

이전에 복잡한 검색 패턴을 만든 경우 매우 편리합니다. /pattern

편집 : 이것은 모든 열린 버퍼에서도 작동한다는 것을 알았습니다.

:bufdo vimgrepadd // %
:copen