Fig adds autocomplete to your terminal.
As you type, Fig pops up subcommands, options, and contextually relevant arguments in your existing terminal on macOS.
Want to add autocomplete to a CLI tool (or make changes to an existing autocomplete spec)? We welcome contributions!
Completion specs are defined in a declarative schema that specifies subcommands
, options
and arguments
. Suggestions are generated from information in the spec or can be generated dynamically by running shell commands or reading local files.
For documentation and tutorials, visit fig.io/docs
To request autocomplete for a CLI tool, open an issue.
Build your first spec in 3 or less min: fig.io/docs/getting-started
Prerequisites:
- Early access to the Fig macOS app.
If you don't have access yet, sign up for the waitlist and say you're interested in building completions!
- Node and NPM (or Yarn).
Setup:
-
Click here to fork this repo.
-
Clone your forked repo and create an example spec
# Replace `YOUR_GITHUB_USERNAME` with your own github username
git clone https://github.com/YOUR_GITHUB_USERNAME/autocomplete.git fig-autocomplete
cd fig-autocomplete
# Add withfig/autocomplete as a remote
git remote add upstream https://github.com/withfig/autocomplete.git
# Install packages
npm install
# Create an example spec (call it "abc")
npm run create-example
# Turn on "dev mode"
npm run dev
- Now go to your terminal and type
abc[space]
. Your example spec will appear. 😊
- Edit your spec in typescript in the
dev/
folder - On save, specs are compiled to the
specs/
folder - In dev mode specs are read from the
specs
folders. Otherwise they are read from~/.fig/autocomplete
# Create a new spec from a boilerplate template
npm run create-boilerplate
# Typecheck all specs in the dev/ folder
npm test
# Compile typescripts specs from dev/ folder to specs/ folder
npm run build
# Copy all specs from the specs/ folder to the ~/.fig/autocomplete folder
npm run copy:all
# Copy an individual spec from the specs/ folder to the ~/.fig/autocomplete folder
npm run copy <spec-name>
Fig works with iTerm, the native MacOS Terminal app, Hyper and the integrated terminal in VSCode.
Fig uses the Accessibility API on Mac to position the window, insert text on your behalf, and read what you've typed in your terminal.
Currently, Fig is only available on MacOS.
Sign up for the waitlist at fig.io. Fig is currently in a private beta. We are onboarding batches of new users each week.
Yes! Check out our guide on how to get started building autocomplete specs.
Get in touch at [email protected] or chat with us on Discord.