El picker: navegar buscando, no clicando
El buscador difuso es la pieza que más cambia cómo te mueves por un proyecto. Qué es la coincidencia difusa, las fuentes, cómo se opera dentro del picker, y cómo mandar los resultados a la quickfix.
De todo lo que vas a instalar, esto es lo que más cambia tu día. No es «un buscador de archivos»: es la forma de llegar a cualquier sitio de cualquier proyecto sin recordar dónde está, y sustituye al árbol de archivos, al historial de pestañas y a la mitad de los atajos que traías de otro editor.
- Qué es la coincidencia difusa y cómo se escribe una consulta que acierte.
- Las fuentes: ficheros, texto, buffers, símbolos, diagnósticos, ayuda.
- Cómo se opera dentro del picker: seleccionar, abrir en split, previsualizar.
- Mandar los resultados a la quickfix y editarlos en masa.
- Montarlo con snacks.nvim, y qué pasa con Telescope y fzf-lua.
Buscar en vez de navegar
En un editor con árbol de archivos, para abrir algo despliegas carpetas hasta encontrarlo. Necesitas saber dónde está. En un proyecto ajeno, o grande, o los lunes, no lo sabes.
Un picker invierte eso: escribes trozos del nombre y él encuentra el fichero. No necesitas la ruta, ni el nombre completo, ni el orden correcto de las letras.
escribes: uspfencuentra: src/components/UserProfile.tsx app/user/profile_form.rb test/users/profile_spec.jsEso es coincidencia difusa: no busca la cadena uspf, busca ficheros donde esas cuatro letras aparezcan en ese orden, aunque estén separadas. Y las ordena por cercanía: cuanto más juntas y más cerca del principio de una palabra, más arriba.
Por qué esto no es un accesorio
Cuando llegar a cualquier fichero cuesta menos de un segundo, dejas de organizar tu trabajo alrededor de lo que tienes abierto. Se acabó mantener quince pestañas por si acaso, o dejar el árbol ocupando una quinta parte de la pantalla para no perderte.
El árbol de archivos no desaparece porque sea malo: desaparece porque resuelve un problema que ya no tienes.
Escribir consultas que acierten
Tres hábitos que cambian mucho el resultado:
- Iniciales de las palabras.
UserProfile.tsxse encuentra conuptmejor que conuserpro. - Trozos de la ruta.
comp/useracota a un directorio sin escribirlo entero. - Empieza corto. Tres o cuatro letras suelen bastar; añade más solo si hay demasiados resultados.
Las fuentes
Un picker no busca solo ficheros. Es la misma ventana sobre listas distintas, y ahí está su valor: una sola interfaz para todo.
Ficheros
Los del proyecto, respetando .gitignore. El que más usarás.
Grep
Busca texto en todo el proyecto, no nombres. Es ripgrep por debajo.
Buffers
Lo que ya tienes abierto. Sustituye a las pestañas.
Recientes
Ficheros de sesiones anteriores. «Eso que tocaba ayer.»
Símbolos
Funciones y clases del fichero o del proyecto, vía LSP.
Diagnósticos
Todos los errores y avisos del proyecto en una lista.
La distinción entre ficheros y grep es la que más cuesta interiorizar y la más rentable: si sabes cómo se llama, ficheros; si recuerdas una línea de código pero no dónde estaba, grep. La segunda es la que sustituye a leerse el proyecto.
Operar dentro del picker
Un picker se abre en modo Insertar, porque lo primero que haces siempre es escribir. Lo que viene después es lo que casi nadie aprende:
| Qué quieres | Cómo |
|---|---|
| Bajar y subir por la lista | Ctrl-n / Ctrl-p |
| Abrir | Enter |
| Abrir en split vertical | Ctrl-v |
| Abrir en split horizontal | Ctrl-s |
| Desplazar la vista previa | Ctrl-d / Ctrl-u |
| Marcar varios | Tab |
| Mandar todo a la quickfix | Ctrl-q |
| Cerrar | Esc |
Compruébalas en tu picker, no te fíes de una tabla
Cada picker trae sus propias teclas y son configurables. La forma de verlas es abrirlo y consultar su ayuda —en snacks, con ? dentro del picker—. Ese reflejo vale para cualquier plugin con interfaz propia: la lista de teclas está dentro, no en un tutorial.
La tecla que lo conecta con el resto del editor
De todas, la importante es mandar los resultados a la quickfix.
Un picker enseña coincidencias de una en una y se cierra al elegir. La quickfix es una lista persistente que puedes recorrer, y sobre la que puedes ejecutar un comando en cada entrada con :cdo.
grep "getUserData" → 47 coincidencias en el pickerCtrl-q → las 47 en la quickfix:cdo s/getUserData/fetchUser/g | updateBuscas con el picker, revisas, y renombras en 47 ficheros con una línea. El picker encuentra; la quickfix opera — todo lo que aprendiste en la lección 1.6 se enchufa aquí, y esta tecla es el puente.
Montarlo
Usaremos snacks.nvim: además del picker trae explorador, terminal, dashboard y notificaciones, así que sustituye a media docena de plugins con una sola dependencia.
Suite de calidad de vida: picker con decenas de fuentes, explorador, terminal, dashboard, notificaciones e indent guides. Cada módulo se activa por separado.
Todo cuelga de <leader>f —de find— y por eso which-key te lo agrupa solo. Es el presupuesto de teclas de la lección 1.1 aplicado: un prefijo, una familia.
Los tres que vas a usar el 90% del tiempo
<leader>ff para ficheros, <leader>fg para texto y <leader>fb para buffers. Interiorízalos antes de tocar los demás.
Y <leader>fh, la ayuda, es el que convierte la lección 0.6 en un reflejo: buscar en la documentación con el mismo gesto con el que buscas un fichero.
El explorador es secundario
<leader>e abre el árbol, y merece la pena tenerlo: para ver la forma de un proyecto que no conoces, para crear y renombrar ficheros, para arrastrar cosas de sitio.
Lo que no merece la pena es dejarlo abierto. Ocupa pantalla permanentemente para resolver algo que el picker resuelve en un segundo. Ábrelo cuando lo necesites y ciérralo.
Dos piezas de interfaz que esperaban aquí
El Nivel 1 te enseñó a hacer estas dos cosas con el editor desnudo y te prometió la versión con interfaz. Esta es.
Reemplazar en el proyecto, viendo lo que haces. En la lección 1.3 el reemplazo masivo era :cfdo s/.../../g | update sobre una quickfix, a ciegas hasta el final. grug-far pone delante un buffer interactivo: escribes búsqueda y reemplazo, ves cada coincidencia con su contexto antes de tocar nada, excluyes las que no quieres y aplicas. Por debajo es ripgrep, como el grep del picker.
Buscar y reemplazar en el proyecto con vista previa en vivo. Ábrelo con :GrugFar (o mapea <leader>sr). No sustituye a :cdo — para reemplazos con lógica sigue mandando la quickfix —, sustituye al miedo de los reemplazos grandes.
La barra de buffers, si la echas de menos. La lección 1.1 te enseñó a vivir sin pestañas: <leader>fb lista los buffers más rápido de lo que ningún ojo recorre una barra. Pero si vienes de otro editor y la fila de pestañas visible te da paz mental, el plugin honesto para eso es bufferline:
Dibuja los buffers como pestañas arriba, con iconos y diagnósticos. Es 100% cosmético — no cambia qué es un buffer — y compite por tu atención con una lista que el picker te da bajo demanda. Pruébalo, y si en una semana sigues usando <leader>fb para moverte, desinstálalo sin pena: LazyVim lo trae por defecto y media comunidad lo apaga.
Telescope y fzf-lua
Son las otras dos opciones serias, y no se mencionan aquí de pasada para que quede constancia.
Telescope fue el estándar durante años y tiene el ecosistema de extensiones más grande. fzf-lua delega la coincidencia difusa al binario fzf, y en repositorios enormes se nota. snacks es el más nuevo y el que menos dependencias arrastra si ya lo usas para lo demás.
Los tres hacen lo mismo desde tu punto de vista: escribir, filtrar, elegir. Lo que aprendes en esta lección no es snacks, es el picker, y se transfiere entero si algún día cambias. Elegimos uno porque un curso no puede montar tres, no porque los otros dos estén mal.
Iniciales de las palabras. No hace falta la ruta ni el nombre completo.
Grep busca texto, no nombres de fichero. Es el que sustituye a leerse el proyecto.
El picker encuentra, la quickfix opera. Esa es la conexión entre las dos herramientas.
Deja de abrir el árbol
Durante un día entero, prohíbete el explorador. Todo con el picker:
- Abre cinco ficheros que no recuerdes dónde están, solo con
<leader>ff. - Busca una cadena de texto por todo el proyecto con
<leader>fgy salta a tres coincidencias distintas. - Vuelve a un fichero de ayer con
<leader>fr. - Manda un grep entero a la quickfix con
Ctrl-qy recórrelo con:cnext. - Abre la ayuda de
'signcolumn'con<leader>fhen vez de escribir:h.
Al final del día habrás dejado de pensar en dónde están las cosas, que es exactamente el objetivo.