A Raycast extension for searching keyboard shortcuts and commands across multiple tools. Supports fuzzy searching to quickly find the commands you need.
- Fuzzy Search - Type partial commands to find what you need (e.g.,
nvim wrapfinds "toggle word wrap") - Multi-tool Support - Organize shortcuts by tool (git, nvim, tmux, etc.)
- Quick Copy - Copy shortcut keys or full entries to clipboard
- Easy to Extend - Add new tools by creating a simple JSON file
-
Open Raycast (default:
cmd+space) -
Type
whichto open the Command Cheat Sheet -
Search for commands using:
- Tool name:
git,nvim - Shortcut keys:
gst,leader - Description:
commit,wrap - Multi-word:
nvim wrap,git commit
- Tool name:
-
Press
Enterto copy the shortcut keys, or use the action menu for more options
- Node.js 16+
- npm or yarn
- Raycast (macOS)
-
Clone the repository
-
Install dependencies:
npm install
-
Start development mode:
npm run dev
-
The extension will appear in Raycast - type
whichto test
npm run dev- Start development mode with hot reloadnpm run build- Build the extensionnpm run lint- Run ESLintnpm run fix-lint- Fix linting issues
Create a new JSON file in the shortcuts/ directory for your tool:
# Example: shortcuts/tmux.jsonEach tool file should be a JSON array with keys and description fields:
[
{
"keys": "prefix c",
"description": "create new window"
},
{
"keys": "prefix n",
"description": "next window"
}
]Edit src/which.tsx and add two things:
Import the file (at the top with other imports):
import tmuxShortcuts from "../shortcuts/tmux.json";Add to loadShortcuts() (in the function):
// Load tmux shortcuts
tmuxShortcuts.forEach((shortcut: any) => {
allShortcuts.push({
tool: "tmux",
keys: shortcut.keys,
description: shortcut.description,
});
});Run npm run dev and search for your new tool's commands.
.
├── src/
│ └── which.tsx # Main component
├── shortcuts/
│ ├── git.json # Git aliases
│ └── nvim.json # Neovim keybindings
├── package.json # Dependencies and scripts
└── README.md # This file
- Keep descriptions concise and descriptive
- Use lowercase for consistency
- Group related commands in the same file
- Test fuzzy search with multi-word queries