# skim-rs/skim

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/skim-rs-skim).**

6,592 stars · 239 forks · Rust · mit

## Links

- GitHub: https://github.com/skim-rs/skim
- awesome-repositories: https://awesome-repositories.com/repository/skim-rs-skim.md

## Topics

`fuzzyfinder` `rust` `skim`

## Description

Skim is a cross-platform interactive fuzzy finder that runs as a terminal application, a Rust library, a Vim and Neovim plugin, and a shell integration tool. It provides real-time filtering and selection from lists of items, supporting keyboard and mouse navigation, live preview panes, and multi-select functionality across Linux, macOS, and Windows.

The tool distinguishes itself through a composable query expression tree that supports fuzzy, exact, inverse, prefix, suffix, and logical AND/OR operators, combined with a Smith-Waterman scoring engine that penalizes typos and gaps for natural relevance ordering. It offers a thread-pooled matching pipeline, ANSI-aware parsing that preserves color information, and pseudo-terminal preview execution for interactive commands. Skim can be embedded as a Rust library with custom item types and action callbacks, run as a network service over TCP or Unix sockets, and controlled remotely via Unix domain socket session control.

The interface supports extensive customization of colors, borders, scrollbars, key bindings, and layout, with options to load configuration from files and respect the NO_COLOR environment variable. It integrates with Bash, Zsh, Fish, and Nushell for file selection, history search, and directory navigation, and provides shell completions and man page generation. The tool also supports dynamic command execution, where external commands are invoked with the current query to generate live search results, and offers multiple matching algorithms including Arinae, Fzy, and SkimV2 variants.

## Tags

### Development Tools & Productivity

- [Fuzzy Finders](https://awesome-repositories.com/f/development-tools-productivity/fuzzy-finders.md) — A cross-platform fuzzy finder that runs on Linux, macOS, and Windows with native terminal multiplexer popup support.
- [Fuzzy Search Interfaces](https://awesome-repositories.com/f/development-tools-productivity/fuzzy-search-interfaces.md) — Filters and selects items from large lists by typing partial or approximate queries in real time.
- [Directory Navigators](https://awesome-repositories.com/f/development-tools-productivity/directory-navigators.md) — Lets the user browse and select files or directories by typing a partial name or path. ([source](https://github.com/skim-rs/skim#readme))
- [File System Navigators](https://awesome-repositories.com/f/development-tools-productivity/file-system-navigators.md) — Lets users scroll through and select from lines of a file or command output using a fuzzy search interface. ([source](https://github.com/skim-rs/skim#readme))
- [Fuzzy Finder Integrations](https://awesome-repositories.com/f/development-tools-productivity/fuzzy-finder-integrations.md) — Embeds a fuzzy finder as a Rust library for interactive search in other applications. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Embeddable](https://awesome-repositories.com/f/development-tools-productivity/fuzzy-finders/embeddable.md) — Ships a Rust crate that embeds an interactive fuzzy finder with custom item types and action callbacks.
- [Query-Driven Command Interfaces](https://awesome-repositories.com/f/development-tools-productivity/interactive-command-interfaces/query-driven-command-interfaces.md) — Re-executes a shell command each time the query changes, using the query text as a template placeholder. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Interactive Fuzzy Finders](https://awesome-repositories.com/f/development-tools-productivity/interactive-fuzzy-finders.md) — Provides real-time fuzzy filtering and selection from lists of items with keyboard navigation. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Interactive Text Filters](https://awesome-repositories.com/f/development-tools-productivity/interactive-text-filters.md) — Processes all input items against a query and prints matching lines to stdout without opening the terminal UI. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Shell Command Execution](https://awesome-repositories.com/f/development-tools-productivity/shell-command-execution.md) — Reads input items by executing a shell command and streaming its standard output. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Shell Integration](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/terminal-cli-enhancements/shell-terminal-utilities/automation-integration-tools/shell-integration.md) — Hooks into Bash, Zsh, Fish, and Nushell for file selection, history search, and directory navigation.
- [Shell Key Bindings](https://awesome-repositories.com/f/development-tools-productivity/terminal-shell-cli/terminal-cli-enhancements/shell-terminal-utilities/general-enhancements-tooling/terminal-utilities/interactive-navigation-helpers/shell-key-bindings.md) — Registers keyboard shortcuts in the shell to launch the fuzzy finder with the current command line. ([source](https://github.com/skim-rs/skim#readme))
- [Terminal User Interfaces](https://awesome-repositories.com/f/development-tools-productivity/terminal-user-interfaces.md) — Provides an interactive fuzzy finder with live preview and customizable key bindings for terminal use.
- [Item Previews](https://awesome-repositories.com/f/development-tools-productivity/working-copy-management/work-item-traceability/item-previews.md) — Displays a live preview of the currently highlighted item in a separate panel within the interface. ([source](https://github.com/skim-rs/skim#readme))
- [Live Preview Panels](https://awesome-repositories.com/f/development-tools-productivity/working-copy-management/work-item-traceability/item-previews/live-preview-panels.md) — Shows a live preview of the currently highlighted item, optionally running inside a PTY for interactive commands. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Query-Driven Command Invocations](https://awesome-repositories.com/f/development-tools-productivity/cli-command-extensions/programmatic-command-invokers/query-driven-command-invocations.md) — Runs external commands with the current query and displays output as the interactive selection list. ([source](https://github.com/skim-rs/skim#readme))
- [Custom Key Mappings](https://awesome-repositories.com/f/development-tools-productivity/custom-key-mappings.md) — Lets users remap the keyboard shortcuts used to navigate and select items within the interactive interface. ([source](https://github.com/skim-rs/skim#readme))
- [Custom Selection Actions](https://awesome-repositories.com/f/development-tools-productivity/custom-selection-actions.md) — Triggers user-defined commands on selected items, such as reloading the list or updating the query. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Event Loop Integrations](https://awesome-repositories.com/f/development-tools-productivity/event-loop-integrations.md) — Integrates the fuzzy finder's event loop with a Tokio runtime for asynchronous control. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [External Command Execution](https://awesome-repositories.com/f/development-tools-productivity/external-command-execution.md) — Runs shell commands on selected items and uses their output as search sources or action results. ([source](https://github.com/skim-rs/skim#readme))
- [Path-Optimized Matchers](https://awesome-repositories.com/f/development-tools-productivity/file-filtering-utilities/file-path-locators/path-optimized-matchers.md) — Applies a matching scheme optimized for file paths, improving relevance when searching through files. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Neovim Plugins](https://awesome-repositories.com/f/development-tools-productivity/neovim-plugins.md) — Provides a Neovim plugin that replaces the default fzf with skim for interactive code navigation. ([source](https://github.com/skim-rs/skim#readme))
- [Custom Key Action Bindings](https://awesome-repositories.com/f/development-tools-productivity/terminal-action-bindings/custom-key-action-bindings.md) — Assigns arbitrary shell commands or built-in actions to key presses, including clipboard copy or aborting the session. ([source](https://github.com/skim-rs/skim/blob/master/README.md))
- [ANSI Sequence Parsers](https://awesome-repositories.com/f/development-tools-productivity/terminal-escape-sequences/ansi-sequence-parsers.md) — Reads ANSI escape sequences in input data and preserves color formatting during display. ([source](https://github.com/skim-rs/skim#readme))
- [ANSI Sequence Stripping](https://awesome-repositories.com/f/development-tools-productivity/terminal-escape-sequences/ansi-sequence-parsers/ansi-sequence-stripping.md) — Strips ANSI escape codes for matching while preserving original color information in displayed output.
- [ANSI-Preserving Parsers](https://awesome-repositories.com/f/development-tools-productivity/terminal-escape-sequences/ansi-sequence-parsers/ansi-sequence-stripping/ansi-preserving-parsers.md) — Strips ANSI escape codes for matching while preserving the original colors and styles in the displayed output. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Mouse Selection Support](https://awesome-repositories.com/f/development-tools-productivity/terminal-mouse-behaviors/mouse-selection-support.md) — Provides mouse click selection for items in the interactive fuzzy finder interface. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Vim Plugins](https://awesome-repositories.com/f/development-tools-productivity/vim-plugins.md) — Provides a Vim plugin that exposes the fuzzy finder for file and content selection within the editor. ([source](https://github.com/skim-rs/skim#readme))
- [Contextual Preview Panels](https://awesome-repositories.com/f/development-tools-productivity/working-copy-management/work-item-traceability/item-previews/contextual-preview-panels.md) — Displays surrounding lines or custom output for the currently highlighted item in a separate panel. ([source](https://github.com/skim-rs/skim#readme))

### Part of an Awesome List

- [Backend as a Service](https://awesome-repositories.com/f/awesome-lists/data/backend-as-a-service.md) — Ships a public Rust API for running interactive fuzzy finder sessions programmatically. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Embeddable Fuzzy Finders](https://awesome-repositories.com/f/awesome-lists/more/rust-libraries/embeddable-fuzzy-finders.md) — Ships a Rust crate that embeds an interactive fuzzy finder with custom item types and callbacks.
- [Regular Expressions](https://awesome-repositories.com/f/awesome-lists/data/regular-expressions.md) — Interprets the query as a regex pattern to find items that match the expression. ([source](https://github.com/skim-rs/skim#readme))
- [UI Theme Customization](https://awesome-repositories.com/f/awesome-lists/devtools/theming-and-customization/ui-theme-customization.md) — Applies built-in palettes or per-component style overrides for all interface elements. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [System Utilities](https://awesome-repositories.com/f/awesome-lists/devtools/system-utilities.md) — Fuzzy finder.

### Data & Databases

- [Fuzzy-Filterable Lists](https://awesome-repositories.com/f/data-databases/data-querying/table-item-filters/ui-list-filtering/fuzzy-filterable-lists.md) — Matches items against a fuzzy search pattern, ranking results by relevance without requiring exact spelling. ([source](https://github.com/skim-rs/skim#readme))
- [Fuzzy Matching](https://awesome-repositories.com/f/data-databases/fuzzy-matching.md) — Selects among multiple scoring strategies, including typo-resistant variants, to tune search relevance. ([source](https://github.com/skim-rs/skim#readme))
- [Fuzzy Match Score Combiners](https://awesome-repositories.com/f/data-databases/ranking-engines/fuzzy-match-score-combiners.md) — Combines scores from multiple matching conditions when using the AND/OR filter engine. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Fuzzy Search Engines](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/fuzzy-search-engines.md) — Matches items using fuzzy, prefix, suffix, exact, inverse, and combined patterns with AND/OR logic. ([source](https://github.com/skim-rs/skim/blob/master/README.md))
- [Fuzzy Finder Query Services](https://awesome-repositories.com/f/data-databases/remote-query-execution/fuzzy-finder-query-services.md) — Runs a network server that accepts fuzzy search queries and returns results remotely.
- [Auto-Acceptance Behaviors](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/matching-algorithms/auto-acceptance-behaviors.md) — Automatically accepts the result when exactly one match is found, or exits immediately when no matches exist. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Diacritic Normalizers](https://awesome-repositories.com/f/data-databases/search-indexing-technologies/search-indexing/search-information-retrieval/matching-ranking-logic/search-result-optimizations/diacritic-normalizers.md) — Ignores diacritics during matching so "cafe" finds "café". ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Search Result Sorting](https://awesome-repositories.com/f/data-databases/search-result-sorting.md) — Orders fuzzy search results by configurable score, index, position, and length criteria. ([source](https://github.com/skim-rs/skim/blob/master/README.md))

### Software Engineering & Architecture

- [Fuzzy Query Expression Trees](https://awesome-repositories.com/f/software-engineering-architecture/abstract-syntax-tree-parsing/ast-querying/fuzzy-query-expression-trees.md) — Parses queries into an AST supporting fuzzy, exact, inverse, prefix, suffix, and logical operators.
- [Approximate Matching Tools](https://awesome-repositories.com/f/software-engineering-architecture/string-matching-algorithms/approximate-matching-tools.md) — Penalizes typing mistakes in the query instead of blocking them, so approximate matches still appear. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))

### System Administration & Monitoring

- [Command Output Streamers](https://awesome-repositories.com/f/system-administration-monitoring/command-output-streamers.md) — Pipes the output of any command into an interactive fuzzy finder so the user can pick one or more results. ([source](https://github.com/skim-rs/skim#readme))
- [Search Filters](https://awesome-repositories.com/f/system-administration-monitoring/real-time-monitoring-dashboards/search-filters.md) — Presents a scrollable list of items and filters them in real time as the user types a query. ([source](https://github.com/skim-rs/skim/blob/master/.dockerignore))
- [Interactive Selector Customizers](https://awesome-repositories.com/f/system-administration-monitoring/advanced-display-configuration/display-customizers/interactive-selector-customizers.md) — Adjusts the appearance, key bindings, and matching logic of the interactive selector through command-line options. ([source](https://github.com/skim-rs/skim/blob/master/.dockerignore))
- [Interactive History Navigators](https://awesome-repositories.com/f/system-administration-monitoring/request-history-persistence/command-history-persistence/interactive-history-navigators.md) — Persists previous queries and interactive-mode commands to disk and recalls them with keyboard shortcuts during a session. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))

### User Interface & Experience

- [Keyboard Navigation](https://awesome-repositories.com/f/user-interface-experience/keyboard-navigation.md) — Lets the user move through the filtered list and select an entry using arrow keys or other shortcuts. ([source](https://github.com/skim-rs/skim#readme))
- [Rust Library Embeddings](https://awesome-repositories.com/f/user-interface-experience/media-embeds/interactive-component-embeds/rust-library-embeddings.md) — Provides a Rust library API to embed an interactive fuzzy finder into other applications. ([source](https://github.com/skim-rs/skim#readme))
- [Smith-Waterman Fuzzy Scorers](https://awesome-repositories.com/f/user-interface-experience/search-result-ranking/relevance-scoring/smith-waterman-fuzzy-scorers.md) — Ranks fuzzy matches using a Smith-Waterman algorithm that penalizes typos and gaps.
- [List Search Filters](https://awesome-repositories.com/f/user-interface-experience/selectable-lists/list-search-filters.md) — Lets the user pick one or more items from the filtered list and outputs the selection for further processing. ([source](https://github.com/skim-rs/skim#readme))
- [Selection Lists](https://awesome-repositories.com/f/user-interface-experience/selection-lists.md) — Lets the user pick one or more items from a filtered list and returns the selection to the calling process. ([source](https://github.com/skim-rs/skim/blob/master/.dockerignore))
- [Terminal UI Components](https://awesome-repositories.com/f/user-interface-experience/terminal-ui-components.md) — A TUI widget that provides live preview, multi-select, and customizable key bindings for command-line tools.
- [Item Navigation and Selection](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/item-navigation-and-selection.md) — Presents an interactive list of items and narrows results as the user types, letting them pick one quickly. ([source](https://github.com/skim-rs/skim/blob/master/.envrc))
- [Preview Panes](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/layout-structural-components/preview-panes.md) — Displays a live preview pane for the focused item, supporting plain text and PTY output.
- [Interface Color Schemes](https://awesome-repositories.com/f/user-interface-experience/custom-theme-definitions/interface-color-schemes.md) — Changes foreground and background colors of interface elements to match personal preferences. ([source](https://github.com/skim-rs/skim/blob/master/README.md))
- [Live List Reloads](https://awesome-repositories.com/f/user-interface-experience/form-builders/builder-item-collapsers/builder-item-managers/list-item-markers/live-list-reloads.md) — Replaces the current list of items with a new set without restarting the interface. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Match Context Displays](https://awesome-repositories.com/f/user-interface-experience/match-context-displays.md) — Displays surrounding lines or custom output for the currently highlighted item using a user-defined command. ([source](https://github.com/skim-rs/skim#readme))
- [Split Query Matchers](https://awesome-repositories.com/f/user-interface-experience/matching-logic/split-query-matchers.md) — Provides a split-query matching strategy for interactive filtering of list items. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Field-Specific Matching](https://awesome-repositories.com/f/user-interface-experience/search-filters/field-specific-matching.md) — Restricts the fuzzy search to only certain delimited columns of the input data. ([source](https://github.com/skim-rs/skim/blob/master/README.md))
- [Multiple Selections](https://awesome-repositories.com/f/user-interface-experience/selectable-lists/multiple-selections.md) — Lets users pick several entries from a filtered list using the TAB key when multi-select mode is active. ([source](https://github.com/skim-rs/skim/blob/master/README.md))
- [Pre-Selected Items](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/item-navigation-and-selection/pre-selected-items.md) — Marks specific items as selected when the list first appears, based on index, text content, or a regular expression. ([source](https://github.com/skim-rs/skim/blob/master/ARCHITECTURE.md))
- [Pseudo-Terminal Preview Executions](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/layout-structural-components/preview-panes/pseudo-terminal-preview-executions.md) — Runs preview commands inside a pseudo-terminal for correct rendering of interactive programs.
- [Application Appearance Customizers](https://awesome-repositories.com/f/user-interface-experience/terminal-user-interfaces/visual-styling-presentation/interface-appearance-customization/component-appearance-customizers/application-appearance-customizers.md) — Adjusts colors, borders, scrollbars, icons, and layout of the search interface. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Custom Color Palette Definitions](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/design-utilities/design-systems/color-system-utilities/color-palette-management/custom-color-palette-definitions.md) — Applies built-in or custom color palettes to UI elements using ANSI and hex values. ([source](https://github.com/skim-rs/skim#readme))

### Artificial Intelligence & ML

- [Dynamic Command Execution](https://awesome-repositories.com/f/artificial-intelligence-ml/agentic-systems-frameworks/agent-capabilities-skills-tooling/agent-tooling/dynamic-command-execution.md) — Accepts command templates with the query as a variable and executes them to generate live search results. ([source](https://github.com/skim-rs/skim#readme))

### DevOps & Infrastructure

- [Configuration File Loading](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/file-based-configuration/configuration-file-loading.md) — Reads configuration from a specified file path instead of relying solely on command-line arguments. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Fuzzy Finder Network Services](https://awesome-repositories.com/f/devops-infrastructure/devops/backend-as-a-service-platforms/backend-as-a-service-integrations/fuzzy-finder-network-services.md) — Starts a listening server for remote fuzzy search queries and results over TCP or Unix sockets. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))

### Operating Systems & Systems Programming

- [Unix Socket Interfaces](https://awesome-repositories.com/f/operating-systems-systems-programming/kernel-core-internals/system-programming-primitives/inter-process-communication/unix-socket-interfaces.md) — Accepts external commands over a Unix domain socket to drive a running fuzzy finder session.
- [Native Windows Execution](https://awesome-repositories.com/f/operating-systems-systems-programming/native-windows-execution.md) — Runs natively on the Windows operating system without requiring a compatibility layer. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Custom Library Action Callbacks](https://awesome-repositories.com/f/operating-systems-systems-programming/processor-register-configurations/custom-library-action-callbacks.md) — Registers user-defined callbacks that execute when specific events occur during a skim session. ([source](https://github.com/skim-rs/skim/blob/master/CHANGELOG.md))
- [Custom File Source Commands](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/file-system-management/file-systems/file-template-generators/file-generation-overrides/custom-file-source-commands.md) — Replaces the default file listing command with a custom command to control which files are searched. ([source](https://github.com/skim-rs/skim#readme))

### Programming Languages & Runtimes

- [Fuzzy Matching](https://awesome-repositories.com/f/programming-languages-runtimes/language-features-paradigms/concurrency-models/concurrency/task-orchestration-frameworks/thread-pools/fuzzy-matching.md) — Distributes item scoring across a thread pool for responsive interactive filtering on large lists.
- [Regular Expression Engines](https://awesome-repositories.com/f/programming-languages-runtimes/regular-expression-engines.md) — Switches the matching mode to treat the query as a regular expression. ([source](https://github.com/skim-rs/skim/blob/master/README.md))

### Web Development

- [Keyboard Shortcuts](https://awesome-repositories.com/f/web-development/jsx-compilers/variable-assignments/assignment-operators/custom-assignment-behavior/keyboard-shortcuts.md) — Lets users assign keyboard shortcuts to trigger actions like selecting, previewing, or executing commands. ([source](https://github.com/skim-rs/skim#readme))
- [External Search Integrations](https://awesome-repositories.com/f/web-development/search-result-management/external-previews/external-search-integrations.md) — Passes the current query to an external command like ripgrep and displays its results inside the interactive finder. ([source](https://github.com/skim-rs/skim#readme))
- [Customizable Selectors](https://awesome-repositories.com/f/web-development/terminal-ui-layouts/customizable-selectors.md) — Provides extensive customization of colors, borders, scrollbars, key bindings, and layout for the interactive selector.
