explaingit

skim-rs/skim

6,809RustAudience · developerComplexity · 2/5Setup · easy

TLDR

A fast fuzzy finder for the terminal written in Rust that lets you search any list of items by typing partial matches, with built-in shell shortcuts for finding files and searching command history.

Mindmap

mindmap
  root((skim))
    What it does
      Fuzzy search any list
      Filter as you type
      Select and output
    Built-in shortcuts
      File picker
      Command history
      Directory switcher
    Features
      Preview window
      Interactive mode
      Vim and Neovim plugin
    Install options
      Package managers
      cargo install
      Pre-built binary
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Search through files in your project interactively and open the selected file in your editor without leaving the terminal

USE CASE 2

Browse your shell command history with fuzzy search to instantly re-run a previous command

USE CASE 3

Pipe any list of text into skim and pick from it interactively in your terminal workflow

USE CASE 4

Search file contents in real time by wiring skim to ripgrep as a live backend that updates results as you type

Tech stack

Rust

Getting it running

Difficulty · easy Time to first run · 5min

In plain English

Skim is a fuzzy finder for the terminal, written in Rust. A fuzzy finder is a program that lets you search through a list of items by typing a partial or approximate match. As you type, the list narrows in real time until you find what you are looking for and select it. The core program is a single executable called sk. The most common uses are finding files and searching command history. You can pipe any list of text into sk and then filter it interactively. For example, you might pipe a list of file names through sk, select one, and open it in your editor, all without leaving the terminal. Shell bindings for Bash, Zsh, and Fish let you activate skim with keyboard shortcuts: one shortcut opens a file picker, another lets you search through your previous commands, and a third switches directories through skim. Skim also works in interactive mode, where it runs an external search command (like ripgrep or grep) in the background as you type, updating the results live. This is useful for searching through the contents of many files in a project without waiting for the full search to finish first. A preview window feature lets you see a preview of the selected item (such as the content of a file) alongside the search list. Color schemes and keymaps are configurable. The tool integrates with Vim and Neovim as a plugin, and it can also be used as a library in Rust projects. Skim is available through package managers on macOS, Arch Linux, Alpine, Gentoo, Void Linux, Fedora, and Guix. It can also be installed with Rust's cargo package manager or by downloading a pre-built binary directly.

Copy-paste prompts

Prompt 1
Write a Bash function that uses skim to fuzzy-search all files in my project and open the selected one in vim
Prompt 2
How do I configure skim in my .bashrc to replace the default Ctrl+R history search with skim's interactive fuzzy history search?
Prompt 3
Set up skim with a preview window that shows file contents as I browse results using bat for syntax-highlighted previews, show me the shell alias
Prompt 4
I want to use skim as a library in my Rust CLI tool so users can pick from a list of options interactively, show me the minimal Rust code to embed it
Open on GitHub → Explain another repo

← skim-rs on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.