Saltar a contenido

Búsqueda

Dos maneras de encontrar cosas más allá del archivo actual, con una regla compartida: el ámbito es una ruta visible y editable. Ambos paneles muestran exactamente dónde miran — el proyecto del documento actual por defecto — y ampliar la búsqueda es literalmente editar esa ruta (hasta ~ o / si se quiere). La búsqueda nunca mira en silencio donde no se espera.

Por ser una ruta, el ámbito se completa como tal en macOS: al escribir hacia adelante se ofrecen las carpetas que terminan el componente bajo el cursor, ~ incluido. Un ámbito que no existe lo dice, y nombra la carpeta más cercana que sí existe — normalmente a un error de tipeo de la que se quería. Los espacios alrededor de una ruta pegada se ignoran.

Ambos recorridos respetan .gitignore, omiten archivos ocultos y limitan el tamaño de archivo, cortesía del motor del propio ripgrep incrustado en el núcleo — no un subproceso.

Buscar en todo (⇧⌘A)

Una caja para archivos, símbolos, comandos y ajustes (Ctrl+Mayús+A en Linux). Lo escrito se compara con los cuatro a la vez, y cada clase de respuesta llega en un grupo propio, el grupo con la mejor coincidencia primero: escribir save pone los comandos Save sobre un save.md, escribir main pone main.rs sobre un comando que lo menciona. Un grupo muestra unas pocas filas, suficientes para elegir con el grupo siguiente aún a la vista. Los archivos son los del proyecto, buscados primero por nombre; los símbolos son los del servidor de lenguaje, y llegan cuando responde; los comandos son los de los menús; los ajustes son los interruptores del editor, cada uno con si está activado. Sin nada escrito lista los archivos abiertos y los comandos ejecutados últimamente. El archivo o símbolo seleccionado muestra su código junto a la lista. ⏎ abre un archivo o un símbolo, ejecuta un comando, y cambia un ajuste — guardado, y en efecto al momento, como si se cambiara en Ajustes.

Escriba fragmentos del nombre de archivo — editwc encuentra EditorWindowController.swift — con coincidencia difusa y ranking. ↑/↓ mueven la selección, ⏎ abre (trayendo al frente la ventana si el archivo ya está abierto), ⎋ cierra. Una consulta vacía lista el ámbito alfabéticamente. Los mismos filtros apilados de Buscar en el proyecto aplican aquí — cada tipo de filtro refina las rutas encontradas — y la línea de estado dice cuántas coincidencias podaron los filtros.

⏎ abre la fila seleccionada cuando las filas ya responden a lo escrito; mientras queda una búsqueda pendiente — la consulta cambió hace un instante — busca en su lugar, para que afinar una consulta nunca abra un archivo por accidente. ⌘⏎ (Ctrl+⏎ en Linux) abre siempre. ↑/↓ mueven la selección, ⎋ cierra, y el doble clic también abre. La línea de estado lo explica. El panel se puede ensanchar y recuerda su tamaño; en una fila el directorio cede primero, perdiendo su inicio, de modo que el nombre del archivo siempre se lee.

Bajo la lista se muestra el sitio de la fila seleccionada: las primeras líneas de un archivo en Abrir rápidamente, la línea de una coincidencia entre las de alrededor en Buscar en el proyecto, la declaración de un símbolo en Ir al símbolo — leídas del documento abierto cuando el archivo lo está, que puede ir por delante del disco. El divisor entre ambos se puede arrastrar.

El ámbito se recorre una vez al abrir el panel y luego se filtra en memoria — escribir es instantáneo en un repositorio real, y el número de archivos en la línea de estado dice qué se está buscando.

Buscar en el proyecto (⇧⌘F)

La consulta es el texto a buscar, tal como se escribe — lo que se pega en una búsqueda es código, y el código está lleno de (, . y [. El conmutador .* junto a la consulta la lee como expresión regular, y queda como se dejó hasta que el editor se cierra. Los resultados llegan como ruta:línea: texto. ⏎ salta directamente a la línea coincidente. Los resultados tienen tope (200) para seguir siendo instantáneos; refine el patrón en lugar de desplazarse.

Las mayúsculas siguen la regla smart case que popularizó ripgrep: una consulta toda en minúsculas coincide con cualquier caja, mientras que una consulta con alguna mayúscula se busca tal cual. Así todo encuentra TODO, y TODO solo encuentra TODO.

Una línea bajo los resultados dice qué hizo la búsqueda — «18 matches in 4 files · 812 searched», «No matches in 812 files searched» o el motivo de que no se pudiera buscar nada (un ámbito inexistente, uno donde todo está ignorado o un patrón inválido, citado). Un resultado vacío nunca es mudo: un patrón mal escrito o un ámbito equivocado se anuncian en vez de parecer una ausencia de coincidencias.

Filtros apilados

Bajo la consulta de Buscar en el proyecto, + Add Filter apila refinamientos:

  • line contains / line excludes — el texto de la línea coincidente;
  • file contains / file excludes — la ruta del archivo del resultado.

Los filtros son subcadenas sin distinción de mayúsculas y se combinan con y: líneas con foo donde también aparece bar, pero no en archivos con test en el nombre, es la consulta foo más line contains bar más file excludes test. Las exclusiones de archivo podan archivos enteros antes siquiera de abrirlos, así que las búsquedas filtradas siguen siendo tan rápidas como las simples.

La palabra seleccionada

Seleccionar una palabra entera marca los demás lugares donde aparece en el texto visible — un tinte gris, distinto de la selección y de las coincidencias de la barra de búsqueda, para que los tres se distingan. Seleccionar parte de una palabra, o un tramo que abarca varias, no marca nada: esas selecciones se hicieron por otro motivo.

⎋ guarda las marcas y deja la selección, así la palabra sigue ahí para actuar sobre ella. Editar o seleccionar en otro sitio vuelve a hacer la pregunta. La búsqueda cubre lo que está en pantalla, que es donde una marca se puede ver, así que un archivo largo cuesta lo que uno corto.

Dos ajustes en Ajustes ▸ Editor deciden qué cuenta: si Item es item, y si item dentro de items lo es. Ambos vienen apagados — un nombre que difiere en mayúsculas es otro nombre, y la palabra se seleccionó como palabra.

La pila de saltos

Cada salto — un resultado de búsqueda, Ir a la Definición, una referencia, una entrada del esquema, un chum, Ir a la línea, el siguiente hallazgo — recuerda de dónde partió. También Find Next e Ir al inicio/fin de bloque cuando adonde van está fuera de la vista; un paso a una coincidencia que ya está en pantalla no es un salto. Go Back (⌃⌘←) recorre esos orígenes; Go Forward (⌃⌘→) los desanda. Cada uno devuelve lo que había al dejar el sitio: el cursor, lo seleccionado y cuánto estaba desplazada la vista. La historia se reescribe desde el punto actual: saltar a un sitio nuevo descarta el rastro hacia adelante. Las posiciones sobreviven a las ediciones como línea/columna, así que volver tras un cambio aterriza cerca, no perdido.

Ir a la última edición (⇧⌘⌫, Ctrl+Mayús+Retroceso en Linux) va a donde se cambió algo por última vez, en el archivo abierto que sea; pulsado otra vez con el cursor aún allí, va al cambio anterior, y así hacia atrás. Una ráfaga de escritura en unas pocas líneas es un solo sitio, cargar o recargar un archivo no es ninguno, y los sitios se mueven con el texto al editarse a su alrededor. Cada uno es un salto, así que Go Back vuelve. El rastro dura la sesión: un archivo cerrado se lleva sus sitios.

Archivos recientes (⌘E, Ctrl+E en Linux) lista los archivos abiertos últimamente en el proyecto en primer plano, el más reciente primero, sin el que está delante: ⌘E y Intro vuelve al archivo anterior. Sitios recientes (⌥⌘E, Ctrl+Alt+Mayús+E en Linux) lista dónde ha estado el cursor — los sitios de los que partieron los saltos y los sitios editados, en cualquier archivo — el más reciente primero, una entrada por sitio, cada una con el código de alrededor junto a la lista. Ambas filtran al escribir. Los sitios, como el rastro de ediciones, duran la sesión.

Un salto a una línea que ya está en pantalla deja la vista donde está. Uno fuera de la vista la mueve, en una animación breve, para que la línea quede a un tercio de la altura, con lo que la precede a la vista; un salto lejano empieza el movimiento una pantalla antes del destino, para mostrar hacia dónde fue sin recorrer todo el archivo. Con el movimiento reducido pedido en los ajustes del sistema, la vista se mueve de una vez.

Aún no está

  • Buscar en todo lista solo los ajustes que se activan o desactivan; un ancho de tabulación o un tema se eligen en Ajustes. Dos toques de Mayús no la abren.
  • Reemplazar entre archivos.
  • Conmutadores de mayúsculas/palabra completa en el panel (el propio patrón puede expresar ambos).
  • Historial de búsquedas persistente.
  • Editar el ámbito en la interfaz GTK, cuyos paneles buscan solo en el proyecto actual; el completado de rutas llegará con ello.