A fast, terminal-based file search and content exploration tool built with Rust and Ratatui.
- Fuzzy file search: Live fuzzy matching for filenames as you type
- Content search: Search text within files across your entire project
- Git awareness: Respects .gitignore files and git repositories
- Async performance: Concurrent file processing for fast searches
- Syntax highlighting: Match highlighting in search results
- Keyboard navigation: Vim-style navigation (hjkl) and standard arrow keys
git clone https://github.com/Cod-e-Codes/ratsnest.git
cd ratsnest
cargo build --releaseThe binary will be available at target/release/ratsnest.
# Search in current directory
ratsnest
# Search in specific directory
ratsnest -d /path/to/directory
# Start with initial search pattern
ratsnest -d /path/to/directory -p "pattern"-d, --directory <PATH>: Directory to search (default: current directory)-p, --pattern <PATTERN>: Initial search pattern
↑/k,↓/j: Navigate up/downPage Up/Down: Navigate by pagesHome/End: Go to start/end of listTab: Switch between File Browser and Content Search modesn/]: Next pagep/[: Previous pageCtrl+g: First pageG: Last page
/: Start search input (live search in File Browser mode)Enter: Execute search (required for Content Search mode)Esc: Cancel search input
h/F1: Toggle help screenq: Quit application
- Lists all files in the directory
- Live fuzzy search as you type
- Respects gitignore patterns
- Pagination: Browse files in pages when directory contains many files
- Search for text within files
- Shows filename, line number, and context
- Highlights matches in results
- Pagination: Browse search results in pages for large datasets
- Rust 1.70 or later
anyhow: Error handlingclap: Command-line argument parsingcrossterm: Terminal controlfuzzy-matcher: Fuzzy string matchingignore: Git-aware file walkingratatui: Terminal UI frameworktokio: Async runtime
This project is licensed under the MIT License.
Contributions are welcome. Please ensure all tests pass and follow the existing code style before submitting a pull request.


