FZF를 사용하여 파일 * 내용 * (grep / ag / rg)을 검색하는 방법은 무엇입니까?


1

프로젝트 전체 (다중 파일) 검색을 통해 FZF , 그 결과는 파일 경로 검색어와 일치하고 더 관련성이 높은 결과를 찾아냅니다. 내용 일치.

예를 들어, 위키의 Ag 예제 ,

ag --nobreak --nonumbers --noheading . | fzf

나는 질의 할 것이다. search 이런 식으로하면,

  plugin/keybindings.vim:cnoremap <expr> <C-Y> refract#if_incsearch("\<C-L>", "\<C-Y>")
  plugin/keybindings.vim:cmap            <C-P> <Plug>(refract_incsearch_prev)
  plugin/coherent.vim:set incsearch
  plugin/coherent.vim:setg tags+=./tags;~  " search for tags recursively upwards until ~
  plugin/search.vim:" use it for tab-completion instead depending on context of cmdline
  plugin/search.vim:  autocmd User Hint,listical_next,listical_prev Latitude
  plugin/search.vim:  autocmd User Grepper call hint#prepare_highlights()
  plugin/search.vim:let g:fzf_colors =
  plugin/search.vim:" let g:grepper =
  plugin/search.vim:\   <q-args>,
  plugin/search.vim:\   <bang>0)
  plugin/search.vim:augroup END
  plugin/search.vim:  autocmd!
  plugin/search.vim:
  plugin/search.vim:
  plugin/search.vim:
  plugin/search.vim:
> plugin/search.vim:
  41/517
> search

내가 뭘 잘못하고 있죠? FZF없이 비슷한 Ag 쿼리를 실행하면 파일 내용에 내 쿼리가 발생하는 결과 만 얻을 수 있습니다.

답변:


3

나는 ag와 fzf 사이의 상호 작용을 오해하고 있었고, 입력 한 쿼리가 fzf로 파이핑되기 전에 어떻게 든 ag를 거쳤다 고 생각했다. 돌이켜 보면, 이것은 바보 같은 실수였습니다. 필터링은 fzf와 정확히 동일하기 때문에, ag는 의미있는 라인을 많이 생성하는 방법으로 사용되었습니다.

내가 원했던 것을 얻기 위해, 나는 ag가 생성 한 라인의 포맷을 보았다.

plugin/coherent.vim:set incsearch

대우하라고 fzf에게 말하십시오. : 필드 구분자로 사용되며 검색 범위를 필드 2, 3, 4, ...로 제한해야합니다.

ag --nobreak --nonumbers --noheading . | fzf --delimiter=: --nth=2..

처리 된 파일 중 하나에 : 그들의 파일 이름에서, 그러나 저것은 나가 너무 빈번하게 일어날 것으로 예상하지 않는 무언가이다.


답변 해주셔서 감사합니다! "delimeter"에 오타가 있습니다. 대신 "구분 기호"여야합니다. :)
Zhe Li

@ ZheLi 좋은 잡기. 결정된!
ivan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.