# skim

> Fuzzy finder written in Rust with interactive search capabilities and shell integration

Stars: 7.0k · Language: Rust · License: MIT · Categories: Search

- Repository: https://github.com/lotabout/skim
- Website: https://crates.io/crates/skim
- Page: https://www.trmn.sh/tools/skim

## Install

- Homebrew: `brew install sk`
- Cargo: `cargo install skim`
- Arch Linux: `pacman -S skim`

## Overview

Skim is a fuzzy finder that provides a single executable called `sk` for quickly searching and selecting items from lists. It can operate as both a command-line filter (similar to grep) and an interactive interface for selecting files, directories, or command outputs. The tool supports standard fuzzy matching, exact matching, regex patterns, and various search operators including AND/OR logic.

The tool integrates with popular search utilities like ripgrep, ag, ack, and grep through its interactive mode, where commands are dynamically executed based on user input. Skim includes comprehensive shell bindings for Bash, Zsh, and Fish that provide keyboard shortcuts for file selection (Ctrl-T), command history search (Ctrl-R), and directory navigation (Alt-C). It also supports tab completion with ** expansion.

Skim provides extensive customization options including custom keymaps, color schemes, and preview windows. It can be used as a Vim/Neovim plugin, integrated into shell workflows, or consumed as a Rust library. The tool supports multi-selection mode, field-based matching, and various output formats for different use cases.

### Installation

```bash
# via Homebrew
brew install sk
```

```bash
# via Cargo
cargo install skim
```

```bash
# via Arch Linux
pacman -S skim
```

![Skim demo showing fuzzy search interface](https://asciinema.org/a/pIfwazaM0mTHA8F7qRbjrqOnm.svg)

![Interactive mode demo](https://media.trmn.sh/cached/b9cacd92faae7439bb5ea8f1d6eb40afab6fa1ab82bf6954b0541826d16123d8.gif)

## Alternatives

- [television](https://www.trmn.sh/tools/television.md): Fuzzy finder for the terminal that searches files, text, git repositories, and custom data sources in real-time (Rust, 6.4k stars)
- [rga](https://www.trmn.sh/tools/rga.md): Line-oriented search tool that extends ripgrep to search inside PDFs, archives, documents, and multimedia files (Rust, 9.9k stars)
- [sad](https://www.trmn.sh/tools/sad.md): Batch file search-and-replace tool that shows a diff preview before writing changes; optional fzf selection of hunks and delta/diff-so-fancy colorizing. (Rust, 2.0k stars)
- [ast-grep](https://www.trmn.sh/tools/ast-grep.md): CLI for structural code search, lint, and rewriting that matches tree-sitter AST nodes using patterns written as ordinary code. Written in Rust. (Rust, 16.4k stars)
- [fd](https://www.trmn.sh/tools/fd.md): Fast filesystem search tool that replaces find with regex patterns and smart defaults (Rust, 44.9k stars)

## Guides

- [fzf vs skim](https://www.trmn.sh/compare/fzf-vs-skim): Compare fzf, skim: workflows, strengths and tradeoffs.

---

Canonical: https://www.trmn.sh/tools/skim
