%EC%9D%84%20%EA%B2%80%EC%83%89%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
프로젝트 전체(다중 파일) 검색을 실행할 때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 쿼리를 실행하면 파일 내용에서 쿼리가 발생한 결과만 얻습니다(이것이 바로 내가 원하는 것입니다).
답변1
나는 내가 입력한 쿼리가 fzf로 파이핑되기 전에 어떻게든 ag를 통해 전달되었다고 생각하여 ag와 fzf 사이의 상호 작용을 오해하고 있었습니다. 돌이켜보면 이것은 어리석은 실수였습니다. 필터링은 정확히 fzf가 수행하는 작업이고 ag는 단순히 의미 있는 라인을 생성하는 방법으로만 사용되고 있기 때문입니다.
내가 원하는 것을 얻기 위해, 나는 ag가 생성한 줄의 형식을 살펴보았습니다. 예:
plugin/coherent.vim:set incsearch
fzf에게 필드 구분 기호로 처리 :
하고 검색 범위를 필드 2, 3, 4,...로 제한해야 한다고 지시합니다.
ag --nobreak --nonumbers --noheading . | fzf --delimiter=: --nth=2..
처리된 파일 중 :
파일 이름에 a가 포함되어 있으면 문제가 발생하지만, 그런 일이 자주 발생하지는 않을 것입니다.
답변2
ripgrep 스크립트를 찾는 사람을 위해 제가 생각해낸 내용은 다음과 같습니다.
FZF_EDITOR="gvim"
# Fuzzy Ripgrep Ignoring-case
frgi() {
local result
IFS=$'\n' result="$(rg -i --line-number "$@" | fzf --no-sort --tac --delimiter=: --nth=2..)"
local filename
local lineno
local _
if [[ -n "$result" ]]
then
IFS=':' read -r filename lineno _ <<< "$result"
# Vim can accept line-number with +99
# But if your editor cannot, then you had better remove the + argument
verbosely "$FZF_EDITOR" +"$lineno" "$filename"
fi
}