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

Что я делаю неправильно? Когда я запускаю аналогичный Ag-запрос без FZF, я получаю результаты только в том случае, если мой запрос произошел в содержимом файла (что я и хочу).

1 ответ1

3

Я неправильно понимал взаимодействие между ag и fzf, полагая, что введенный мною запрос каким-то образом был пропущен через ag перед передачей в fzf. В ретроспективе это было глупой ошибкой, поскольку фильтрация - это именно то, что делает fzf, а ag используется просто как способ генерировать тонны значимых строк.

Чтобы получить из этого то, что я хотел, я посмотрел на формат строк, сгенерированных ag, например:

plugin/coherent.vim:set incsearch

Скажите fzf рассматривать : как разделитель полей и что он должен ограничивать область своего поиска полями 2, 3, 4, ...

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

Это сломается, если какой-либо из обработанных файлов будет содержать : в имени файла, но я не ожидаю, что это произойдет слишком часто.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .