
Laboratorio de investigación en seguridad que reproduce CVE-2026-41414 (pwn de pull_request_target en .github/workflows/pr.yml) — instantánea de skim-rs/skim @ ca986f4, no un fork.
Artefacto de investigación automatizado — no es el proyecto original.
Este repositorio es un laboratorio desechable construido por un sistema automatizado para una tesis de maestría en la Université Laval sobre la reproducción de vulnerabilidades publicadas en flujos de trabajo de GitHub Actions. Es una instantánea verbatim de
skim-rs/skimen el commitca986f444c37d2c1dc15ce1fad2fe101776af8d9(2026-04-14), redistribuida bajo la licencia propia de ese proyecto, cuyo archivo se incluye sin cambios en esta instantánea.El proyecto original no está involucrado, nunca es el objetivo, y la vulnerabilidad estudiada aquí ya es pública. Cada secreto y variable en este repositorio es un valor ficticio generado aleatoriamente — no hay ninguna credencial real presente. Las referencias de acciones y las imágenes de ejecutores están fijadas a lo que resolvieron el 2026-04-14; consulta
pinning.mden la salida del sistema para cada cambio realizado en la instantánea.Preguntas u objeciones: [email protected]
La vida es corta, ¡skim!
Pasamos mucho de nuestro tiempo navegando entre archivos, líneas y comandos. ¡Ahí es donde entra Skim! Es un potente buscador difuso diseñado para hacer tu flujo de trabajo más rápido y eficiente.
Skim proporciona un único ejecutable llamado sk. Piénsalo como una alternativa más inteligente a herramientas como
grep: una vez que lo pruebes, ¡te preguntarás cómo pudiste vivir sin él!
El proyecto skim contiene varios componentes:
sk — el programa principalsk dentro de Vim/Nvim. Consulta skim.vim para soporte de Vim.| SO | Gestor de paquetes | Comando |
|---|---|---|
| macOS | Homebrew | brew install sk |
| macOS | MacPorts | sudo port install skim |
| Alpine | apk | apk add skim |
| Arch | pacman | pacman -S skim |
| Fedora | COPR | ver abajo |
| Gentoo | Portage | emerge --ask app-misc/skim |
| Guix | guix | guix install skim |
| Void | XBPS | xbps-install -S skim |
Los paquetes actualizados de Fedora se proporcionan mediante un repositorio COPR no oficial mantenido por la comunidad.```bash sudo dnf copr enable sisyphus1813/skim sudo dnf install skim
## Manualmente
Se aplica cualquiera de las siguientes opciones:
- Usando el script de instalación:
```sh
# ¡Comprueba siempre el contenido del script antes de ejecutarlo!
$ curl --proto '=https' --tlsv1.2 -LsSf https://github.com/skim-rs/skim/releases/latest/download/skim-installer.sh | sh
```
- Usando el binario: Simplemente [descarga el ejecutable sk](https://github.com/skim-rs/skim/releases) directamente.
- Instalar desde [crates.io](https://crates.io/): `cargo install skim`
- Compilar manualmente:
```sh
$ git clone --depth 1 [email protected]:skim-rs/skim.git ~/.skim
$ cd ~/.skim
$ cargo build --release
$ # Añade el ejecutable resultante `target/release/sk` a tu PATH
```
Entonces tendrás acceso a:
- La página man, que puedes escribir en la ruta correcta o ejecutar `man --local-file <(sk --man)`
- Las completaciones de shell (y atajos de teclado opcionales), usando `source <(sk --shell \<shell> \[--shell-bindings])`, consulta los detalles a continuación
# Uso
Skim se puede usar como un filtro general (similar a `grep`) o como una
interfaz interactiva para ejecutar comandos.
## Como plugin de Vim (en neovim, consulta [fzf-lua](https://github.com/ibhagwan/fzf-lua) con el perfil de skim)
Mediante vim-plug (recomendado):
Instala skim, luego:```vim
Plug 'skim-rs/skim'
Aquí tienes algunos ejemplos para comenzar:```bash
sk
vim $(find . -name "*.rs" | sk -m)
Este último comando te permite seleccionar archivos con la extensión ".rs" y abre
tus selecciones en Vim: ¡un gran ahorro de tiempo para desarrolladores!
## Como Interfaz Interactiva
`skim` puede invocar otros comandos dinámicamente. Normalmente querrías
integrarlo con [grep](https://www.gnu.org/software/grep/),
[ack](https://github.com/petdance/ack2),
[ag](https://github.com/ggreer/the_silver_searcher), o
[rg](https://github.com/BurntSushi/ripgrep) para buscar contenidos en un
directorio de proyecto:```sh
# works with grep
sk --ansi -i -c 'grep -rI --color=always --line-number {q} .'
# works with ack
sk --ansi -i -c 'ack --color {q}'
# works with ag
sk --ansi -i -c 'ag --color {q}'
# works with rg
sk --ansi -i -c 'rg --color=always --line-number {q}'
Nota: En estos ejemplos,
{q}se expandirá literalmente a la consulta de entrada actual (envuelta entre comillas simples). Esto significa que estos ejemplos buscarán la cadena de consulta exacta, no de forma difusa. Para la búsqueda difusa, canaliza la salida del comando haciasksin usar el modo interactivo.

Los enlaces para Fish, Bash y Zsh están disponibles en el directorio shell:
completion.{shell} contiene los scripts de completado para el uso de la CLI de skkey-bindings.{shell} contiene las combinaciones de teclas y las integraciones de shell:
ctrl-t para seleccionar un archivo mediante skctrl-r para seleccionar una entrada del historial mediante skalt-c para hacer cd a un directorio seleccionado mediante skfish) ** para completar rutas de archivo, por ejemplo, ls **<tab> mostrará un widget de sk para seleccionar una carpetaPara habilitar estas funciones, carga el archivo key-bindings.{shell} y configura los completados según la documentación de tu shell o consulta a continuación.
Puedes generar completados de shell para tu shell preferido usando la bandera --shell con uno de los shells compatibles: bash, zsh, fish, powershell o elvish:
source <(sk --shell bash)
source <(sk --shell zsh)
sk --shell fish | source
#### Opción 2: Guardar en un archivo para que se cargue automáticamente al iniciar el shell```sh
# For bash, add to ~/.bashrc
echo 'source <(sk --shell bash)' >> ~/.bashrc # Or save to ~/.bash_completion
# For zsh, add to ~/.zshrc
sk --shell zsh > ~/.zfunc/_sk # Create ~/.zfunc directory and add to fpath in ~/.zshrc
# For fish, add to ~/.config/fish/completions/
sk --shell fish > ~/.config/fish/completions/sk.fish
Algunos atajos de teclado de uso común:
| Tecla | Acción |
|---|---|
| Enter | Aceptar (seleccionar el actual y salir) |
| ESC/Ctrl-G | Abortar |
| Ctrl-P/Arriba | Mover el cursor hacia arriba |
| Ctrl-N/Abajo | Mover el cursor hacia abajo |
| TAB | Alternar selección y bajar (con -m) |
| Shift-TAB | Alternar selección y subir (con -m) |
Para una lista completa de atajos de teclado, consulta la página
man (man sk).
skim toma prestada la sintaxis de fzf para coincidir elementos:
| Token | Tipo de coincidencia | Descripción |
|---|---|---|
text | coincidencia difusa | elementos que coinciden con text |
^music | coincidencia exacta de prefijo | elementos que comienzan con music |
.mp3$ | coincidencia exacta de sufijo | elementos que terminan con .mp3 |
'wild | coincidencia exacta (entre comillas) | elementos que incluyen wild |
!fire | coincidencia exacta inversa | elementos que no incluyen fire |
!.mp3$ | coincidencia exacta de sufijo inversa | elementos que no terminan con .mp3 |
skim también admite la combinación de tokens.
El espacio en blanco tiene el significado de Y. Con el término src main, skim buscará
elementos que coincidan con ambos src y main.
| significa O (nota los espacios alrededor de |). Con el término .md$ | .markdown$, skim buscará elementos que terminen con .md o
.markdown.
O tiene mayor precedencia. Por ejemplo, readme .md$ | .markdown$ se interpreta como
readme Y (.md$ O .markdown$).
Al usar la opción --split-match, cada parte alrededor de espacios o | se coincidirá de forma dividida:
:) no está presente en la consulta, se realiza una coincidencia normalrg para coincidir tanto en el nombre del archivo como en el contenido.Si prefieres usar expresiones regulares, skim ofrece un modo regex:```sh
sk --regex
Puedes cambiar al modo `regex` dinámicamente presionando `Ctrl-R` (Rotar Modo).
## código de salida
| Código de salida | Significado |
|-----------|--------------------------------------|
| 0 | Salida normal |
| 1 | No se encontró coincidencia |
| 130 | Interrumpido por Ctrl-C/Ctrl-G/ESC/etc... |
# Herramientas compatibles con `skim`
Estas herramientas son o pretenden ser compatibles con `skim`:
## [Complemento fzf-lua para neovim](https://github.com/ibhagwan/fzf-lua)
Un complemento de [neovim](https://neovim.io) que permite usar fzf y skim para navegar por tu código.
Instálalo con tu gestor de paquetes, siguiendo el README. Por ejemplo, con `lazy.nvim`:```lua
{
"ibhagwan/fzf-lua",
-- enable `sk` support instead of the default `fzf`
opts = {'skim'}
}
Un plugin de nushell para permitir una mejor interacción entre skim y nushell.
Siguiendo las instrucciones del README del plugin, puedes instalarlo con cargo:```nu cargo install nu_plugin_skim plugin add ~/.cargo/bin/nu_plugin_skim
## [extensión sqlite](https://github.com/tzachar/sqlite_skim)
Un módulo cargable de `sqlite` que habilita una función `skim_score` en
consultas SQL.
# Personalización
La documentación aquí es solo una vista previa; consulta la página man (`man sk`) para obtener una
lista completa de opciones.
## Mapa de teclas
Especifica los enlaces con pares separados por comas (sin espacios permitidos). Por ejemplo:```sh
sk --bind 'alt-a:select-all,alt-d:deselect-all'
Además, usa + para concatenar acciones, como execute-silent(echo {} | pbcopy)+abort.
Consulta la sección KEY BINDINGS de la página del manual para más detalles.
Hay cinco claves de ordenación para los resultados: score, index, begin, end, length. Puedes
especificar cómo se ordenan los registros mediante sk --tiebreak score,index,-begin o cualquier
otro orden que desees.
¡Probablemente tengas tus propias preferencias estéticas! Afortunadamente, no estás limitado a la apariencia predeterminada: Skim admite una personalización exhaustiva de su esquema de colores.```sh --color=[BASE_SCHEME][,COLOR:ANSI]
Skim también respeta la variable de entorno `NO_COLOR`. Establézcala a cualquier valor y `sk` (y muchas otras aplicaciones de terminal) desactivará toda la salida en color. Consulte [no-color.org](https://no-color.org/) para más detalles.
### Esquemas de Color Base Disponibles
Skim incluye varios esquemas de color integrados que puede usar como punto de partida:```sh
sk --color=dark # Default dark theme (256 colors)
sk --color=light # Light theme (256 colors)
sk --color=16 # Simple 16-color theme
sk --color=bw # Minimal black & white theme (no colors, just styles)
sk --color=none # Minimal black & white theme (no colors, no styles)
sk --color=molokai # Molokai-inspired theme (256 colors)
Puedes personalizar elementos individuales de la interfaz especificando valores de color después del esquema base:```sh sk --color=light,fg:232,bg:255,current_bg:116,info:27
Los colores se pueden especificar de varias formas:
- Colores ANSI (0-255): `sk --color=fg:232,bg:255`
- Valores hexadecimales RGB: `sk --color=fg:#FF0000` (texto rojo)
### Opciones de Personalización de Color Disponibles
Los siguientes elementos de la interfaz se pueden personalizar:
| Elemento | Descripción | Ejemplo |
|--------------------|---------------------------------------------|--------------------------------|
| `fg` | Color de primer plano del texto normal | `--color=fg:232` |
| `bg` | Color de fondo del texto normal | `--color=bg:255` |
| `matched` | Texto coincidente en los resultados de búsqueda | `--color=matched:108` |
| `matched_bg` | Fondo del texto coincidente | `--color=matched_bg:0` |
| `current` | Color de primer plano de la línea actual | `--color=current:254` |
| `current_bg` | Color de fondo de la línea actual | `--color=current_bg:236` |
| `current_match` | Texto coincidente en la línea actual | `--color=current_match:151` |
| `current_match_bg` | Fondo del texto coincidente en la línea actual | `--color=current_match_bg:236` |
| `spinner` | Color del indicador de progreso | `--color=spinner:148` |
| `info` | Color de la línea de información | `--color=info:144` |
| `prompt` | Color del prompt | `--color=prompt:110` |
| `cursor` | Color del cursor | `--color=cursor:161` |
| `selected` | Color del marcador del elemento seleccionado | `--color=selected:168` |
| `header` | Color del texto de cabecera | `--color=header:109` |
| `border` | Color del borde para vista previa/diseño | `--color=border:59` |
### Ejemplos```sh
# Use light theme but change the current line background
sk --color=light,current_bg:24
# Custom theme with multiple colors
sk --color=dark,matched:#00FF00,current:#FFFFFF,current_bg:#000080
# High contrast theme
sk --color=fg:232,bg:255,matched:160,current:255,current_bg:20
Para más detalles, consulta la página del manual (man sk).
--ansi: para analizar códigos de color ANSI (p. ej., \e[32mABC) de la fuente de datos--regex: usa la consulta como expresión regular para coincidir con la fuente de datosEn el modo interactivo, puedes invocar un comando dinámicamente. Pruébalo:```sh sk --ansi -i -c 'rg --color=always --line-number {q}'
### ¿Cómo funciona?

- Skim acepta dos tipos de fuentes: salida de comandos o entrada canalizada (piped input)
- Skim tiene dos tipos de indicadores: un indicador de consulta para especificar el patrón de búsqueda y un
indicador de comando para especificar los "argumentos" del comando
- `-c` se usa para especificar el comando a ejecutar y por defecto usa `SKIM_DEFAULT_COMMAND`
- `-i` le indica a skim que abra el indicador de comando al iniciar, que mostrará `c>` por defecto.
Para reducir aún más los resultados devueltos por el comando, presione
`Ctrl-Q` para alternar el modo interactivo.
## Ejecutar programas externos
Puede configurar enlaces de teclas para iniciar procesos externos sin salir de Skim (`execute`, `execute-silent`).```sh
# Press F1 to open the file with less without leaving skim
# Press CTRL-Y to copy the line to clipboard and aborts skim (requires pbcopy)
sk --bind 'f1:execute(less -f {}),ctrl-y:execute-silent(echo {} | pbcopy)+abort'
Skim ofrece múltiples algoritmos; consulta la ayuda o la página del manual para obtener una lista exhaustiva. Entre ellos se incluyen:
skim_v2, el algoritmo predeterminado, basado libremente en el algoritmo de fzffrizbee, utiliza frizbee, el algoritmo resistente a errores tipográficos del plugin blink.cmp de neovim (solo x86_64 y aarch64)fzy, basado en el algoritmo de fzy ampliado para una resistencia básica a errores tipográficosarinae, el algoritmo más reciente de skim, diseñado internamente con la resistencia a errores tipográficos en mente, ampliando todos los anteriores para que la coincidencia resistente a errores tipográficos se sienta más natural mientras se mantiene el rendimiento por elemento a los mejores estándaresEsta es una gran característica de fzf que skim toma prestada. Por ejemplo, usamos 'ag' para
encontrar las líneas coincidentes y, una vez que reducimos a las líneas objetivo, queremos
finalmente decidir qué líneas elegir comprobando el contexto alrededor de la línea.
grep y ag tienen la opción --context, y skim puede hacer uso de --context para
una mejor ventana de vista previa. Por ejemplo:```sh
sk --ansi -i -c 'ag --color {q}' --preview "preview.sh {}"
(Tenga en cuenta que [preview.sh](https://github.com/junegunn/fzf.vim/blob/master/bin/preview.sh) es un script para imprimir el contexto dado nombre_de_archivo:líneas:columnas)
Obtienes cosas como esta:

### ¿Cómo funciona?
Si el comando de vista previa se proporciona mediante la opción `--preview`, skim reemplazará
`{}` con la línea resaltada actual rodeada de comillas simples, llamará al
comando para obtener la salida e imprimirá la salida en la ventana de vista previa.
A veces no necesitas la línea completa para invocar el comando. En este caso
puedes usar `{}`, `{1..}`, `{..3}` o `{1..5}` para seleccionar los campos. La
sintaxis se explica en la sección [Soporte de campos](#filds-support).
Por último, es posible que quieras configurar la posición de la ventana de vista previa con `--preview-window`:
- `--preview-window up:30%` para colocar la ventana en la posición superior con una altura
del 30% de la altura total de skim.
- `--preview-window left:10:wrap` para especificar que `wrap` permite que la ventana de vista previa
ajuste la salida del comando de vista previa.
- `--preview-window wrap:hidden` para ocultar la ventana de vista previa al inicio; más tarde
se puede mostrar con la acción `toggle-preview`.
## Soporte de campos
Normalmente solo los usuarios de complementos necesitan entender esto.
Por ejemplo, tienes la fuente de datos con el formato:```sh
<filename>:<line number>:<column number>
Sin embargo, quieres buscar <filename> solo cuando escribes consultas. Eso
significa que cuando escribes 21, quieres encontrar un <filename> que contenga 21,
pero sin coincidir con el número de línea o el número de columna.
Puedes usar sk --delimiter ':' --nth 1 para lograr esto.
También puedes usar --with-nth para reorganizar el orden de los campos.
Sintaxis de rango
<num> -- para especificar el campo num-ésimo, comenzando desde 1.start.. -- comenzando desde el campo start-ésimo y el resto...end -- comenzando desde el campo 0-ésimo, hasta el campo end-ésimo,
incluyendo end.start..end -- comenzando desde el campo start-ésimo, hasta el campo end-ésimo,
incluyendo end.Skim se puede usar como biblioteca en tus crates de Rust.
Primero, agrega skim a tu Cargo.toml:```toml
[dependencies]
skim = { version = "", default-features = false, features = [..] }
_Nota sobre las características_:
- la característica `cli` es necesaria para usar skim como cli, *no debería* ser necesaria al usarlo como biblioteca.
### Uso básico
Luego intenta ejecutar este sencillo ejemplo:```rust
extern crate skim;
use skim::prelude::*;
use std::io::Cursor;
pub fn main() {
let options = SkimOptionsBuilder::default()
.height("50%")
.multi(true)
.build()
.unwrap();
let input = "aaaaa\nbbbb\nccc".to_string();
// `SkimItemReader` is a helper to turn any `BufRead` into a stream of `SkimItem`
// `SkimItem` was implemented for `AsRef<str>` by default
let item_reader = SkimItemReader::default();
let items = item_reader.of_bufread(Cursor::new(input));
// `run_with` would read and show items from the stream
let selected_items = Skim::run_with(&options, Some(items))
.map(|out| out.selected_items)
.unwrap_or_else(|| Vec::new());
for item in selected_items.iter() {
println!("{}", item.output());
}
}
También puedes obtener un uso detallado de skim como biblioteca usando tokio y código asíncrono, lo que te permite interactuar dinámicamente con
Dado un Option<SkimItemReceiver>, skim leerá los elementos en consecuencia, hará su
trabajo y nos devolverá la selección del usuario, incluidos los elementos seleccionados, la
consulta, etc. Ten en cuenta que:
SkimItemReceiver es crossbeam::channel::Receiver<Arc<dyn SkimItem>>none, invocará el comando dado y leerá los elementos de la salida del comandoEl trait SkimItem se proporciona para personalizar cómo se puede mostrar, comparar
y previsualizar una línea. Está implementado por defecto para AsRef<str>
Además, SkimItemReader es un asistente para convertir un BufRead en
SkimItemReceiver (podemos convertir fácilmente un File o String en BufRead),
de modo que puedas trabajar con cadenas o archivos fácilmente.
Consulta más ejemplos en el directorio examples/.
Este benchmark ejecuta la interfaz interactiva en una sesión de tmux y espera a que la interfaz de usuario se estabilice.

Puedes generar las gráficas usando just bench-plot o ejecutando la receta manualmente en GNU bash.
Skim invoca find . para obtener una lista de archivos para filtrar. Puedes anular
esto configurando la variable de entorno SKIM_DEFAULT_COMMAND. Por ejemplo:```sh
$ SKIM_DEFAULT_COMMAND="fd --type f || git ls-tree -r --name-only HEAD || rg --files || find ."
$ sk
Puedes ponerlo en tu `.bashrc` o `.zshrc` si quieres que sea el predeterminado.
## Algunos archivos no se muestran en el plugin de Vim
Si usas el plugin de Vim y ejecutas el comando `:SK`, puede que algunos
de tus archivos no se muestren.
Como se describe en [#3](https://github.com/skim-rs/skim/issues/3), en el
plugin de Vim, `SKIM_DEFAULT_COMMAND` se establece al comando por defecto:```vim
let $SKIM_DEFAULT_COMMAND = "git ls-tree -r --name-only HEAD || rg --files || ag -l -g \"\" || find ."
Esto significa que los archivos no reconocidos por git no se mostrarán. Puedes anular el
valor predeterminado con let $SKIM_DEFAULT_COMMAND = '' o localizar los archivos faltantes
por tu cuenta.
fzf es un buscador difuso de línea de comandos escrito en Go y skim intenta implementar uno nuevo en Rust.
Este proyecto está escrito desde cero. Algunas decisiones de implementación son diferentes de fzf. Por ejemplo:
skim tiene un modo interactivo.skim admite preselección.En términos más generales, los mantenedores de skim se permiten cierta libertad de implementación.
El objetivo es mantener skim tan completo en funciones como lo es fzf, pero las banderas de comando pueden diferir.
Crea nuevos issues si encuentras algún error o tienes alguna idea. Las solicitudes de extracción (pull requests) son bienvenidas.
Se incluye un Vagrantfile para iniciar una VM headless de Windows Server 2022 Core para probar
la compatibilidad con Windows sin necesidad de una GUI. Requiere VirtualBox
y Vagrant en tu host (vagrant está incluido en el shell de desarrollo
de Nix mediante flake.nix).```sh
vagrant up # First boot: downloads the box and provisions (~15–20 min)
ssh -p 2222 vagrant@localhost # Password: vagrant
Dentro de la VM, la raíz del proyecto está montada en `C:\vagrant`:```powershell
cd C:\vagrant
cargo build
cargo test
Los arranques posteriores son rápidos: el aprovisionamiento solo se ejecuta una vez:```sh vagrant halt # Stop the VM vagrant up # Resume vagrant destroy # Delete the VM entirely
# Solución de problemas
Para diagnosticar qué está sucediendo, puedes establecer la variable de entorno `SKIM_LOG` o la bandera `--log-level` en `debug` o incluso `trace`, y establecer la variable de entorno `SKIM_LOG_FILE` o la bandera `--log-file` en una ruta. Luego puedes leer esos registros durante o después de la ejecución para comprender mejor qué está ocurriendo. No dudes en añadir esos registros a un issue si necesitas ayuda.
## Problemas de salto de línea con nix, FreeBSD, termux
Si encuentras problemas de visualización como:```bash
$ for n in {1..10}; do echo "$n"; done | sk
0/10 0/0.> 10/10 10 9 8 7 6 5 4 3 2> 1
Por ejemplo
Debes configurar TERMINFO o TERMINFO_DIRS con la ruta de una base de datos terminfo correcta
Por ejemplo, con termux, puedes añadir esto en tu bashrc:``` export TERMINFO=/data/data/com.termux/files/usr/share/terminfo
# Benchmarks
## Benchmark interactivo (`cli`)
El benchmark `cli` compara skim (o cualquier binario compatible) con otras versiones o con fzf ejecutando la interfaz interactiva dentro de una sesión de tmux y consultando la línea de estado hasta que el recuento de coincidencias se estabiliza. De ninguna manera es una medición precisa o infalible, pero tiene el beneficio adicional de comparar contra `fzf` y de proporcionar métricas de recursos (RSS máximo y CPU).```sh
cargo bench --bench cli -- run # defaults: sk, 1 M items, query "test"
cargo bench --bench cli -- run sk -n 500000 -q foo # bare name resolved via $PATH
cargo bench --bench cli -- run ./old/sk ./new/sk -r 5 # compare two binaries, 5 runs each
cargo bench --bench cli -- run sk -f input.txt -q search # use an existing file
cargo bench --bench cli -- generate -f testdata.txt -n 2000000 # generate input file and exit
cargo bench --bench cli -- run sk --perf # record perf data (auto-named file)
cargo bench --bench cli -- run sk --strace # record strace data (auto-named file)
cargo bench --bench cli -- run sk -p perf.data # record perf data to perf.data
cargo bench --bench cli -- run sk -j # JSON output
cargo bench --bench cli -- run sk -r 3 -- --tiebreak=index # pass extra flags to sk
Los nombres de los binarios se resuelven a rutas absolutas mediante which antes de su uso, por lo que nombres simples como sk o fzf funcionan siempre que estén en $PATH.
Los benchmarks de criterio están disponibles para medir el rendimiento de skim con mayor precisión.
Para ejecutarlos, necesitas generar los datos de entrada usando cargo bench --bench cli -- -g benches/fixtures/10M.txt -n 10000000 && cargo bench --bench cli -- -g benches/fixtures/1M.txt -n 1000000, y luego ejecutar cargo bench -j 1.
Estos tardarán varios minutos en completarse.