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.