%20usando%20FZF%3F.png)
Cuando ejecuto una búsqueda en todo el proyecto (varios archivos) a través deFZF, los resultados están inundados de líneas cuyasruta de archivocoincide con la consulta, desplazando los resultados más relevantes donde el archivocontenidoemparejado.
Por ejemplo, ejecutar elEjemplo de agricultura de la wiki,
ag --nobreak --nonumbers --noheading . | fzf
Consultaré search
y obtendré algo como esto,
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
¿Qué estoy haciendo mal? Cuando ejecuto una consulta Ag similar sin FZF, solo obtengo los resultados donde ocurrió mi consulta en el contenido del archivo (que es lo que quiero).
Respuesta1
Estaba entendiendo mal la interacción entre ag y fzf, pensando que la consulta que escribí pasó de alguna manera a través de ag antes de enviarla a fzf. En retrospectiva, fue un error tonto, ya que el filtrado es exactamente lo que hace fzf, y ag se usa simplemente como una forma de generar toneladas de líneas significativas.
Para obtener lo que quería de esto, miré el formato de las líneas que generó ag, por ejemplo
plugin/coherent.vim:set incsearch
Dígale a fzf que lo trate :
como delimitador de campo y que debe restringir el alcance de su búsqueda a los campos 2, 3, 4,...
ag --nobreak --nonumbers --noheading . | fzf --delimiter=: --nth=2..
Esto se romperá si alguno de los archivos procesados contiene a :
en su nombre, pero eso es algo que no espero que suceda con demasiada frecuencia.
Respuesta2
Para cualquiera que busque un script ripgrep, esto es lo que se me ocurrió:
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
}