@erykkozyra/terminalhinter

中文文档
1.2.2发布于 2026/11/13MIT零依赖构建来源已验证近 30 天下载 1980

Open source terminal autocomplete for zsh, bash, fish and PowerShell: a dropdown of folders, git branches, npm scripts and 700+ CLIs, like Fig and Kiro CLI

原始使用文档
文档目录20 节
  1. Install
  2. Why you will like it
  3. Contents
  4. Where it runs
  5. Everything it does
  6. When something goes wrong
  7. Your project
  8. Moving around
  9. The list itself
  10. Keys
  11. Commands
  12. Coming from Kiro CLI or Fig
  13. Your own suggestions
  14. Snippets
  15. Windows
  16. VS Code
  17. Updating and uninstalling
  18. Troubleshooting
  19. Where things are kept
  20. Credits

terminalhinter

npm license

Type three letters. Get the whole command. Open source autocomplete for zsh, bash, fish and PowerShell on macOS, Linux and Windows. It completes 700+ command line tools as you type, hands you the fix when a command fails, and marks the risky ones red.

terminalhinter completing a branch, fixing a typo and marking --force red

Watch every feature play, and try it in your browser. No install needed.

Install

npm i -g @erykkozyra/terminalhinter
thint init

Then open a new terminal tab and type git or cd. thint init finds your shells and sets them all up, with a backup of each config.

Why you will like it

  • A failed command comes back fixed. After a typo or a missing upstream, the empty line offers the fix and Tab takes it.
  • Red before you force-push. Entries that delete or overwrite are red and say why. Ctrl+G explains every word of a line.
  • It reads your project. Your scripts, Makefile targets, branches with the age of their last commit, the processes on your ports.
  • Enter walks into folders. A few presses take you deep into a project, with the list open all the way.
  • Nothing to allow, nothing to sign up for. No Accessibility permission, no app in the menu bar, no account, no telemetry.

Coming from Fig or Kiro CLI, which dropped its autocomplete in 3.0? thint migrate moves you over in one command.

Contents

Where it runs

SystemShells
macOS, Linuxzsh, bash, fish, PowerShell 7
WindowsPowerShell 7, Windows PowerShell 5.1, Git Bash; cmd started by hand (thint -s cmd)

Any terminal app works: iTerm2, Terminal.app, Ghostty, WezTerm, Kitty, Alacritty, VS Code, Cursor, Windows Terminal, and tmux or screen inside them. zsh and bash on macOS and Linux have been around the longest; fish and Windows are newer, so if something looks off there, open an issue. nushell and xonsh come from the upstream project and are not tested.

Everything it does

When something goes wrong

  • It offers the fix for the command that just failed. A typo (gti → git), a missing upstream branch, a branch or script with a near name, a folder that needs -p, a port that is taken. Tab puts it on the line; nothing runs by itself.
  • Ctrl+G explains a line before you run it: every word with what it means, through pipes, &&, redirects and sudo, with a warning for the parts that delete or overwrite things.
  • Risky entries are marked red and say why: --force, reset --hard, rm -r, a Make target tagged [prod], an ssh host called PROD.

Your project

  • Your tasks: Makefile targets with their ## descriptions and sections, just recipes, Taskfile tasks, docker compose services, mise and deno tasks, package.json scripts, turbo tasks, workspace packages for --filter.
  • git with context: the age and message of the last commit next to every branch, stashes by what they hold, the reflog after git reset, and your aliases complete like the command behind them.
  • Ports: kill starts with the processes listening on a port, with their folder (:3000 next dev · ~/Dev/shop).
  • Package versions: npm i react@ lists the tags and the newest releases (pnpm, yarn and bun too).
  • Cloud CLIs: every aws service with its commands and options, and gcloud groups and commands. Your S3 buckets, IAM roles and profiles come from the aws CLI you have, with your own login.
  • kubectl: your contexts, the namespaces after -n, and the names of pods, deployments and the rest from the cluster, for the --context and -n on the line. After kubectl config use-context the next list is the new cluster's.
  • What you ran here: typing the first word brings back whole commands you ran in this folder, and the ones you ran elsewhere in the same repository. Lines that look like they hold a password or token are never stored.

Moving around

  • Enter walks into folders. The list stays open with what is inside; the ↪ entry runs the command where you are. cd also finds folders from anywhere through your bookmarks and zoxide.
  • → looks inside a folder before you commit to it. It puts the folder on the line and lists what is inside; ← goes back up. Enter after a walk goes straight to the highlighted folder.

The list itself

  • It learns what you use, and Shift+Up / Shift+Down puts the list in your own order.
  • Letters in order are enough. chkt finds checkout.
  • Right after a space nothing is selected, so Enter just runs the command. A word you typed in full that no entry starts with runs as typed too.
  • Enter can run at once: thint config set enterRuns true makes Enter take the entry and run the line.

The list after typing pnpm d

Keys

KeyWhat it does
EnterAccept, walk into a folder, or run the command on ↪
→ ←On a highlighted folder at the end of the line: look inside it, go back up
TabAccept the selected entry
↑ ↓Move the selection; ↑ with nothing selected goes to your shell history
Shift+↑ ↓Move the selected entry in the list
EscHide the list until you type again
Ctrl+SpaceShow it again
Ctrl+GWhat each word of the line does
Tab on an empty lineTake the fix offered after a failed command

On a Mac, Ctrl is the Control key (⌃), not Command.

Commands

CommandWhat it does
thint initGuided setup
thint themePick a theme: thint, light, nord or dracula
thint configShow or change settings (all of them)
thint bookmark addBookmark a folder, so cd offers it from anywhere
thint specs newStart your own suggestions for a command
thint order resetForget an order you set with Shift+↑ ↓
thint snippets newStart your snippets: commands with fields to fill in
thint migrateMove over from Kiro CLI, Amazon Q or Fig
thint updateInstall the newest version
thint doctorCheck the installation and tell you how to fix it
thint debug keysRecord what your terminal sends for the keys thint uses

Coming from Kiro CLI or Fig

Kiro CLI 3.0 dropped its autocomplete, and Fig is gone. terminalhinter gives you the same dropdown, locally and without an account. thint migrate takes the Kiro CLI, Amazon Q or Fig lines out of your shell files (keeping a copy of each file), and your own Fig specs in ~/.fig/autocomplete/build can be loaded as they are.

Your own suggestions

For in-house scripts and tools, put a YAML file in ~/.config/terminalhinter/specs:

name: deploy
subcommands:
  - name: staging
    args: { name: app, suggestions: [web, admin] }
  - name: logs
    args: { name: service, script: "ls services" } # every line of the output is a suggestion
options:
  - name: [--force, -f]
    description: Skip the checks

thint specs check points out mistakes. A broken file is skipped and the rest keep working.

Snippets

Commands you type often, with fields to fill in, go in ~/.config/terminalhinter/snippets.yaml (thint snippets new starts the file):

- name: release
  command: "git tag v{{version}} && git push --tags"

Type the name, fill the fields, and the finished command lands on the line.

Windows

Run npm i -g @erykkozyra/terminalhinter and thint init in PowerShell 7 or Windows PowerShell. The setup puts the startup lines into the profile of both PowerShells and into ~/.bashrc for Git Bash.

Windows PowerShell 5.1 comes with scripts turned off, so it would skip its profile and the list never starts there. thint init sees that and offers to allow scripts for your user only (Set-ExecutionPolicy -Scope CurrentUser RemoteSigned, what PowerShell 7 has from the start). If thint or npm themselves will not start in Windows PowerShell for the same reason, use thint.cmd init and npm.cmd.

cmd has no startup file to put the lines in, so there you start the list with thint -s cmd.

VS Code

The list looks its best with these settings:

"terminal.integrated.lineHeight": 1.3,
"terminal.integrated.minimumContrastRatio": 1,
"terminal.integrated.gpuAcceleration": "on"

minimumContrastRatio: 1 stops VS Code from changing the colors of the list. Any monospace font works.

Updating and uninstalling

Updating. thint update. A new tab tells you once when a new version is out; thint config set updateCheck false turns that off. An update with npm i -g @erykkozyra/terminalhinter@latest works too: the next new tab picks it up.

nvm. The list in your tabs never depends on your Node version, because thint carries its own runtime. Only the thint command you type is a global npm package: after you switch your default Node, run npm i -g @erykkozyra/terminalhinter once more so that version has the command too.

From source (needs Node 18+ and git, only for the build):

git clone https://github.com/ErykKozyra/terminalhinter.git
cd terminalhinter
./scripts/install-from-source.sh

This puts a single binary in ~/.local/bin/thint that does not depend on Node at all.

Uninstalling.

thint uninstall
npm rm -g @erykkozyra/terminalhinter

thint uninstall takes the startup lines out of every shell config and removes thint's files. thint init --remove only takes the startup lines out.

Troubleshooting

Start with thint doctor. It checks the install, the startup lines of each shell and your config, and says how to fix what it finds.

A new tab has no list. The startup lines are missing or something stops them. Run thint init again; it replaces old lines instead of adding a second copy. thint -c tells you whether the current shell runs inside terminalhinter.

Windows PowerShell: "running scripts is disabled on this system". Scripts are off in Windows PowerShell 5.1 by default, which stops both thint (npm's thint.ps1) and the profile. Run thint.cmd init and say Yes when it asks to allow scripts, or run Set-ExecutionPolicy -Scope CurrentUser RemoteSigned yourself. A policy set by your company wins over it; then use PowerShell 7 or Git Bash.

The tab opens with "thint could not start". thint failed and left you a plain shell instead of closing the tab. The message says why; thint reinit unpacks thint's files again, which fixes most of these.

After updating with pnpm, new tabs still start the old version. Run thint reinit once. This hits only updates from 1.1.3 and older made with pnpm add -g by hand; thint update does it for you.

Ctrl+Space does nothing, or switches the keyboard layout. macOS uses Control+Space to switch input sources when you have more than one: turn that shortcut off in System Settings › Keyboard › Keyboard Shortcuts › Input Sources. In another terminal, thint debug keys records what it sends; attach the file to an issue.

→ accepts the gray suggestion of my shell instead of looking into the folder. zsh-autosuggestions, fish and PowerShell show their own gray guess after the cursor. thint only takes → on a highlighted folder at the end of the line; to leave → to your shell always, run thint config set folderArrows false.

Enter runs the command instead of taking the entry. Right after a space nothing is selected, so Enter runs what you typed. Press ↓ or Tab to take an entry. thint config set enterRuns true makes Enter take the entry and run the line at once.

The colors of the list look washed out in VS Code. Set "terminal.integrated.minimumContrastRatio": 1; VS Code otherwise changes the colors it draws.

New tabs open slowly, or something in my config runs twice. thint starts a fresh shell inside itself, so anything above the startup lines loads twice. thint doctor counts those lines; thint init moves the startup lines back to the top.

Old Kiro CLI, Amazon Q or Fig lines are still in my shell config. thint migrate takes them out and keeps a copy of each file.

Something else. Start a tab by hand with logging on, for example thint -s zsh -V, do what goes wrong, and attach ~/.local/share/terminalhinter/log/terminalhinter.log (on Windows ~\.terminalhinter\log\terminalhinter.log) to an issue, with the output of thint doctor.

Where things are kept

WhatWhere
Settings~/.terminalhinterrc or ~/.config/terminalhinter/rc.toml (all settings)
Your specs and snippets~/.config/terminalhinter/specs/, ~/.config/terminalhinter/snippets.yaml
What it learned, logs, its own files~/.local/share/terminalhinter (~/.terminalhinter on Windows and older installs)
Startup linesthe top of ~/.zshrc, ~/.bashrc, config.fish or your PowerShell $PROFILE, between # >>> terminalhinter >>> and # <<< terminalhinter <<<

There is no telemetry. What you type and what thint learns stay in these folders. It goes online only to look up packages: once a day it asks npm for its own newest version number (updateCheck = false turns that off), and when you type a package name or react@ it asks the npm registry and the npms.io package search for matches, sending only that word. Some lists come from the tools you have installed, run on your machine as you: git branches, docker ps, kubectl get pods, aws s3 ls for bucket names. Those reach only what the tool itself reaches, with your own login.

Credits

A fork of microsoft/inshellisense, with command specs from withfig/autocomplete. Most of the hard work lives there. Not affiliated with Microsoft, Amazon or Fig.

Made by Eryk Kozyra. News and new features on X: @erykkozyradev.

MIT License

版本与发布记录

@erykkozyra/terminalhinter 共发布 12 个版本,首次发布于 2026/11/04;过去 12 个月发布了 12 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.2.2latest2026/11/131 天前
1.2.2-rc.2next2026/11/131 天前
1.2.2-rc.12026/11/131 天前
1.2.12026/11/104 天前
1.2.02026/11/104 天前
1.1.32026/11/059 天前

关于 @erykkozyra/terminalhinter 的常见问题

@erykkozyra/terminalhinter 是什么?

Open source terminal autocomplete for zsh, bash, fish and PowerShell: a dropdown of folders, git branches, npm scripts and 700+ CLIs, like Fig and Kiro CLI

如何安装 @erykkozyra/terminalhinter?

在项目目录运行 npm install @erykkozyra/terminalhinter,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 thint、terminalhinter,可以用 npx thint 直接运行。

@erykkozyra/terminalhinter 支持 TypeScript 吗?

该包的 package.json 没有声明类型入口。需要类型提示时,可以在 npm 上查找社区维护的 @types/erykkozyra__terminalhinter 是否存在。

@erykkozyra/terminalhinter 可以商用吗?

@erykkozyra/terminalhinter 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@erykkozyra/terminalhinter 的下载量有多少?

根据 npm 官方下载统计,@erykkozyra/terminalhinter 在 2026/10/14 – 2026/11/12 这 30 天内被下载 1,980 次,日均约 66 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@erykkozyra/terminalhinter 还在维护吗?

最新版本 1.2.2 发布于 2026/11/13(1 天前);至今共发布 12 个版本,其中过去 12 个月发布了 12 个;首次发布于 2026/11/04。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。