explaingit

alexpasmantier/television

5,872RustAudience · developerComplexity · 1/5Setup · easy

TLDR

Television (tv) is a fast Rust fuzzy-finder for the terminal that lets you instantly search files, git repos, command history, and custom data sources with partial keyword matching and a live preview pane.

Mindmap

mindmap
  root((repo))
    What It Does
      Fuzzy search in terminal
      Real-time results
      Live preview pane
    Built-in Channels
      Files
      File contents
      Git repos
      Env variables
      Docker containers
    Custom Channels
      Shell command source
      Preview command
      Key bindings
    Shell Integration
      Ctrl+T file search
      Ctrl+R history search
      bash and zsh
    Editor Plugins
      Neovim and Vim
      VS Code
      JetBrains
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

Fuzzy-search all files in your current directory with instant results and a live content preview

USE CASE 2

Search git repositories, environment variables, or Docker containers using built-in named channels

USE CASE 3

Replace Ctrl+T file search and Ctrl+R history search in bash or zsh with fuzzy matching

USE CASE 4

Define a custom channel using a shell command to fuzzy-search any data source you choose

Tech stack

Rusttokioratatuinucleo

Getting it running

Difficulty · easy Time to first run · 5min

Available via Homebrew, Cargo, Scoop, and other package managers, shell integration requires a one-line addition to your shell config file.

In plain English

Television, invoked as tv in the terminal, is a Rust program that lets you search through data in real time using fuzzy matching. Fuzzy matching means you can type partial words or letters in the wrong order and still find what you are looking for, because the search looks for your characters appearing anywhere in the candidate strings rather than requiring an exact match. By default, tv searches files in the current directory. You can switch to other built-in data sources, called channels, by passing a name: tv text searches file contents, tv git-repos finds git repositories on your system, and others cover environment variables and docker containers. Results appear instantly as you type, with a preview pane showing the selected item. You can create your own channels using a simple configuration file. A channel definition specifies a shell command to generate the list of items to search through and optionally a second command to generate a preview for the selected item. The example in the README creates a channel that browses TLDR command documentation pages. Custom actions can be bound to keyboard shortcuts within the channel. Shell integration adds fuzzy file search to Ctrl+T and history search to Ctrl+R in bash and zsh, replacing or supplementing the shell built-in key bindings. A one-liner written to your shell config file is all the setup requires. Plugins exist for Neovim, Vim, VS Code, Zed, and JetBrains IDEs, making the same search experience available from within editors. Television is built on nucleo for fuzzy matching, tokio for async processing, and ratatui for the terminal interface. It is available through Homebrew, Cargo, Arch Linux packages, Scoop, and other package managers.

Copy-paste prompts

Prompt 1
Show me how to install television and run tv to fuzzy-search all files in my project directory with a live content preview.
Prompt 2
How do I use tv git-repos to quickly find and navigate to any git repository on my system?
Prompt 3
Give me the one-line shell config snippet to enable television's Ctrl+T fuzzy file search and Ctrl+R history search in bash.
Prompt 4
Write a television channel config file that fuzzy-searches TLDR documentation pages and shows the page content in the preview pane when selected.
Prompt 5
How do I install the television plugin for Neovim so I can use the same fuzzy search experience from inside my editor?
Open on GitHub → Explain another repo

← alexpasmantier on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.