A fast and versatile fuzzy finder written in Rust, designed to quickly navigate files, lines, and commands.
Skim is a command-line fuzzy finder written in Rust that speeds up developer workflows by enabling fast, intuitive navigation through files, lines, and command history. It serves as a smarter alternative to traditional tools like grep, offering both interactive and filter-based usage with typo-tolerant matching. The project provides a single executable called `sk` and can also be embedded as a library in custom Rust applications.
Developers and system administrators who work extensively in the terminal and want to efficiently search, filter, and navigate through files, command history, or any piped text data. It is particularly useful for those using shells like Bash, Zsh, or Fish, and editors like Vim/Neovim with plugin integration.
Developers choose Skim for its speed, flexible fuzzy search algorithms, and interactive mode that dynamically invokes commands like grep or ripgrep. Its unique selling points include a preview window for context, extensive customization of key bindings and color schemes, and support for advanced search syntax with AND/OR logic, all while being implemented in Rust for performance.
Fuzzy Finder in rust!
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Skim offers several fuzzy matching algorithms, including typo-resistant options like frizbee and arinae, providing flexibility for different accuracy and performance needs as detailed in the algorithms section.
It dynamically invokes external tools like grep or ripgrep in real-time with the -c flag, enabling seamless integration without leaving the interface for efficient workflow enhancement.
The preview window shows surrounding content of selections, such as file lines, by executing custom commands, reducing the need for additional steps to view context.
Skim can be embedded as a Rust library, allowing developers to integrate fuzzy finding directly into custom applications, with examples provided in the library usage section.
Advanced features like preview windows and custom key bindings require shell scripting knowledge and familiarity with Skim's syntax, which can be daunting for users seeking plug-and-play solutions.
Compared to fzf, Skim has fewer third-party integrations and community-contributed scripts, as noted in the compatible tools section, potentially requiring more manual setup for specific workflows.
While there is a man page, some advanced topics, such as field support or interactive mode nuances, lack detailed troubleshooting guides, leading to a steeper learning curve for complex use cases.