Zsh autocomplete that opens as you type

Figxit adds an IDE-style suggestion list to zsh on macOS. Type git and the subcommands appear under the cursor, each with a one-line description, ordered by what you use most in the current project.

Apple Silicon, macOS 13 or later. zsh, bash 5, or fish 4. tmux is optional. No account, no AI chat, no telemetry.

What zsh completes by default

zsh has a completion system that you start with compinit. It answers when you press Tab: it completes the word, or shows a menu of candidates. It does not open while you type, and it does not know which subcommand you use most in a project.

What Figxit adds to zsh

  • A list that opens as you type. No Tab press is needed to see what a command can do.
  • Subcommands for 700+ tools. Figxit loads the open source Fig completion specs, for example for git, docker, npm, and kubectl. Each row has a one-line description.
  • Options with descriptions. Type a dash to see the options of the command on the line. Options you have already typed are hidden.
  • Your own project. make lists the targets of the Makefile in the current folder. npm run , pnpm , yarn , and bun run list the scripts of package.json.
  • Live values. Git branches after git checkout , hosts after ssh , and files and folders where a command takes a path.
  • Ranking from your history. With Atuin installed, a word scores higher when you used it in the same folder, in the same repository, or recently.

The list is a native macOS window. It does not take keyboard focus, and nothing is drawn inside your terminal.

zsh prompt with git ch typed and a list with the git subcommands checkout and cherry-pick, each with a description

Figxit and other zsh completion tools

ToolWhat it showsWhen
zsh completionCandidates for the current wordWhen you press Tab
zsh-autosuggestionsOne past command line from your history, in grey after the cursorAs you type
zsh-autocompleteThe zsh completion menu, drawn in the terminalAs you type
fzf-tabThe zsh completion candidates in an fzf pickerWhen you press Tab
FigxitSubcommands, options, scripts, and targets with descriptions, in a macOS windowAs you type

Figxit does not change your zsh completion setup. It binds Tab, Enter, Up, and Down, and runs your own binding for each key when its list is closed.

Keys

KeyAction
Up, DownMove the selection
TabInsert the selected row
EnterInsert the selected row and run the line. A row with a red icon is inserted and not run
EscClose the list. In zsh vi mode, the same press also goes to command mode

Set up zsh

  1. Download Figxit.dmg, open it, and drag Figxit to Applications.
  2. Open Figxit. A setup window shows the line for zsh. Click Add, or add the line to ~/.zshrc yourself.
  3. Open a new terminal and type a command.
eval "$('/Applications/Figxit.app/Contents/MacOS/figxit-engine' init zsh)"

The line also defines the figxit command. figxit doctor checks each part of the installation.

How it works in zsh

A zsh line editor hook sends the line to the Figxit engine after each key and does not wait for the answer, so typing is not delayed. The shell waits for the engine only when you press Tab or Enter with the list open, for 300 ms at most.

One limit: Escape as a prefix for a Meta key (Escape, then b) works only when the second key follows within the key timeout of zsh, 0.4 seconds.

Questions and answers

Does Figxit replace zsh-autosuggestions?

No. zsh-autosuggestions proposes one full command line from your history. Figxit lists what the command on the line can take: its subcommands, its options, the scripts of package.json, and the targets of the Makefile. The two show different things.

Do I need Oh My Zsh or a plugin manager?

No. Figxit is a macOS app. It adds one line to ~/.zshrc, and the setup window can add that line for you.

Which zsh version does it need?

Any version. The zsh that comes with macOS works.

Does it work in zsh vi mode?

Yes. Esc closes the list, and the same press also goes to command mode.

Does my Tab completion still work?

Yes. When the list is closed, Tab opens your normal zsh completion and Up searches your history, as before.

More about Figxit