scooter: Interactive Find-and-Replace in Your Terminal

Summary
`scooter` is an interactive terminal UI application designed for efficient find-and-replace operations. It allows users to recursively search through files or process text from stdin, providing an interactive interface to toggle which instances to replace. Built with Rust, `scooter` delivers fast performance and supports advanced regex features, custom themes, and seamless editor integrations.
Repository Info
Tags
Click on any tag to explore related repositories
Introduction
scooter is a powerful and interactive terminal UI application for find-and-replace operations. Built with Rust for speed and efficiency, it allows users to recursively search through files in the current directory or process text piped from stdin. With scooter, you can use either fixed strings or regular expressions for searching, enter a replacement, and then interactively toggle which instances you want to replace. It intelligently handles changes in files, ensuring replacements only occur on valid instances.
Key features include:
- Interactive terminal user interface.
- Support for both fixed string and regular expression searches.
- Ability to use capture groups in replacement strings.
- Respects
.gitignoreand.ignorefiles. - Customizable syntax highlighting themes.
- Seamless integration with popular editors like Helix and Neovim.
Installation
scooter can be installed via several package managers or by building from source.
Homebrew
On macOS and Linux:
brew install scooter
Nix
scooter is available as scooter in nixpkgs:
# Example for NixOS
environment.systemPackages = with pkgs; [ scooter ];
AUR
For Arch Linux users:
yay -S scooter
# Or for the latest commit:
yay -S scooter-git
Winget
On Windows:
winget install thomasschafer.scooter
Scoop
On Windows:
scoop install scooter
NetBSD
Install from official repositories:
pkgin install scooter
Prebuilt Binaries
Download the appropriate binary for your system from the scooter releases page. Extract the binary and move it to a directory in your PATH.
Cargo
Ensure you have Cargo installed, then run:
cargo install scooter
Building from Source
Ensure you have Cargo installed, then run:
git clone https://github.com/thomasschafer/scooter.git
cd scooter
cargo install --path scooter --locked
Examples
Basic Usage
To launch scooter in the current directory:
scooter
To specify a different directory:
scooter ../foo/bar
Processing Stdin
Pipe content to scooter:
echo "hello world" | scooter
To write results to a file when processing stdin (in TUI mode, results go to stderr):
cat input.txt | scooter 2> output.txt
For --no-tui mode, results are written to stdout:
cat input.txt | scooter -N -s before -r after > output.txt
Pre-populating Search Fields
You can pre-populate search fields directly from the command line:
scooter \
--search-text "old" \
--replace-text "new" \
--fixed-strings \
--files-to-include "*.rs,*.py"
Use the --immediate-search flag to skip the initial search screen and jump straight to results.
Why Use It?
scooter stands out for its unique combination of interactivity, performance, and flexibility:
- Interactive Control: Unlike traditional find-and-replace tools,
scooterprovides a terminal UI where you can review and selectively apply replacements, giving you fine-grained control over changes. - Blazing Fast Performance: Leveraging the
ripgrepfile walker,scooteris exceptionally fast. Benchmarks show it performing find-and-replace operations on large codebases, like the Linux kernel, with speed comparable to or even exceeding other specialized tools. - Powerful Regex Capabilities: It supports advanced regular expressions, including capture groups, allowing for complex and precise search patterns and dynamic replacements.
- Customization: Tailor your experience with custom syntax highlighting themes and configurable keybindings to match your workflow.
- Editor Integration:
scooteroffers deep integration with popular text editors such as Helix and Neovim, enabling you to perform project-wide or buffer-specific find-and-replace without leaving your editor environment.
Links
- GitHub Repository: https://github.com/thomasschafer/scooter