Alias rgf: Buscar dentro de archivos

2025

Este alias forma parte de la serie Mi terminal, paso a paso

Ya aprendí a moverme por la terminal con fcd y a abrir archivos por nombre usando fopen Pero siempre llega el momento en el que recuerdo una función que escribí hace semanas… y no tengo ni idea de en qué archivo quedó.

Normalmente intentaría algo como grep -r "texto" . pero eso suele llenar la terminal de resultados difíciles de leer (al menos para mí). Lo que necesitaba era algo más interactivo.

La solución

Este alias busca texto de forma recursiva usando rg muestra los resultados con fzf y, al presionar Enter, abre el archivo directamente en Nano en la línea exacta donde aparece el texto.

El código

Añado esto a mi .bashrc Siempre comento el código: no confío en mi memoria a largo plazo.

# rgf - Buscar texto en archivos y abrir en la línea exacta
# Requiere: rg (ripgrep), fzf, bat y nano (o $EDITOR)

rgf() {
  # Si no paso texto a buscar, muestro ayuda
  if [ -z "$1" ]; then
    echo "Uso: rgf <texto_a_buscar>"
    return 1
  fi

  # Buscar texto con rg y enviar los resultados a fzf
  local out
  out=$(rg -n "$1" 2>/dev/null | \
    fzf --preview 'bat --color=always {1} --highlight-line {2}' \
        --preview-window=right:60%:wrap)

  # Si seleccioné un resultado, extraigo archivo y línea
  if [ -n "$out" ]; then
    local file line
    file=$(echo "$out" | cut -d: -f1)
    line=$(echo "$out" | cut -d: -f2)

    # Abrir el editor en la línea exacta
    ${EDITOR:-nano} "+$line" "$file"
  fi
}

¿Cómo lo uso?

Simplemente escribo en la terminal:

rgf "function iniciar"

Aparece una lista interactiva con todas las coincidencias. Elijo una, presiono Enter y empiezo a editar justo donde lo necesito.

Este alias funciona especialmente bien con bat ya que permite una vista previa con colores y resaltado de la línea actual.


Nota: Esta configuración la encontré originalmente en un blog que, lamentablemente, ya no recuerdo. Aunque no puedo dar el crédito exacto, fue el punto de partida para empezar a usar fzf. Tengo más alias de este estilo que iré documentando en futuros artículos.