다음을 치면 일치 항목을 나열하고 싶습니다.
/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은 이전 검색어를 재사용합니다.
하찮은 일이 : 그렙 도구는이 명령 시퀀스의 이름을 따서 명명되었다.
:g//
-p (rint)가 기본 동작이므로 생략해도됩니다.
:g/
더 짧습니다!
--context 9
있습니까?
:%s/regular-expression//gn
It은 다음 라인을 따라 무언가를 생산합니다 :X matches on Y lines
다음을 수행 할 수도 있습니다.
g/pattern/#
원하는 패턴과 줄 번호를 인쇄합니다.
#
필요하지 않습니다. 기본적으로 줄 번호를 보여줍니다
이 목록을보고 경기 사이를 빠르게 이동하려면
:vimgrep example %
또는
:grep example %
이렇게하면 "오류 목록"이 모든 일치 항목으로 채워 :copen
지므로 빠른 수정 버퍼에 모두 나열하는 데 사용할 수 있고 특정 줄에서 Enter 키를 눌러 해당 일치 항목 으로 이동 하거나 :cn
및 같은 명령을 사용 :cp
하여 앞뒤로 이동할 수 있습니다.
자세한 설명 은 비슷한 질문에 대한 내 답변을 참조하십시오.
E499: Empty file name for '%' or '#', only works with ":p:h"
MacVim 8.1에서 제공합니다
방금 새로운 것을 배웠습니다 : Location List
!
입력 :lvim foo %
을 검색 foo
현재 파일과 포함 된 모든 일치 입력 foo
에 위치 목록을 . 평상시처럼 완전히 탐색 할 수있는 빠른 수정 창에서 위치 목록을 열려면
입력 :lopen
합니다. / to를
사용 하여 목록을 살펴 봅니다 ( 최상의 경험을 위해 tpope / unimpaired 매핑 사용 ).:lnext
:lprevious
또 다른 가능성은 포함 파일 검색 명령을 사용하는 것입니다.
[I
그러면 커서 아래에있는 모든 단어가 나열됩니다. 현재 파일에 포함 된 모든 파일도 검색하므로 필요한 것보다 많을 수 있습니다.
그러나이 명령의 좋은 점은 검색 결과 디스플레이에 각 일치 항목의 행 번호와 함께 일치 항목 수도 표시된다는 것입니다.
:help include-search
많은 변형을 볼 수 있습니다.
에 대한 참고 사항
:g//p
이것은 더 줄일 수 있습니다
:g//
다른 사람들이 말했듯이 p (rint)가 기본 작업이기 때문입니다.
[I
grep과 같은 컨텍스트 에서 결과를 얻을 수 --context 9
있습니까?
quickfix
현재 검색 패턴과 일치 하는 멋진 창을 얻을 수 있습니다.
:vim // %
:copen
이전에 복잡한 검색 패턴을 만든 경우 매우 편리합니다. /pattern
편집 : 이것은 모든 열린 버퍼에서도 작동한다는 것을 알았습니다.
:bufdo vimgrepadd // %
:copen
이에 대한 코드를 작성했습니다. 실제로 vimgrep
. 이름이 지정되지 않은 파일에서도 작동합니다. 그리고 사용하기가 더 쉽습니다.
function! Matches(pat)
let buffer=bufnr("") "current buffer number
let b:lines=[]
execute ":%g/" . a:pat . "/let b:lines+=[{'bufnr':" . 'buffer' . ", 'lnum':" . "line('.')" . ", 'text': escape(getline('.'),'\"')}]"
call setloclist(0, [], ' ', {'items': b:lines})
lopen
endfunction
패턴으로 호출하면 모든 일치 항목이있는 위치 창이 열립니다.
이것은 명령 일 수 있습니다
command! -nargs=1 Mat call Matches(<f-args>)
따라서 입력 만하면됩니다. :Mat pattern
또한 다음 매핑을 사용하여 현재 시각적 선택과 일치하는 항목을 가져옵니다.
vnoremap Y "xy:call Matches(@x)<CR>
node_modules
? --Perl 정규식이 Vim의 기본 기능을 어떻게 변경합니까? --다음은 내가 .tex 파일 검색을 설계 한 방법입니다. askubuntu.com/a/789769/25388 개선하는 방법을 배우면 좋을 것입니다. 너무 직관적이지 않아서 나도 논리를 자주 잊어 버렸습니다.