Skip to main content
Typing help — grey suggestions, a list while you write — is not a terminal feature. It is a text editor feature. On a grid of cells that the shell paints, there is nowhere to draw a suggestion: zsh’s zle and bash’s readline own the line, the cursor and the redraw. The way out is to stop letting the shell draw the line. That is what the TYBA command line does: PS1 leaves the screen and the box you type in belongs to the app.
It ships on. A fresh install already opens with it. To turn it off, use Settings → Code → TYBA command line, on the Use the TYBA line switch. The choice applies to new sessions — the mode is set when the shell is born, so a session already open stays as it is.

What you get

Command completion

Suggestions no longer depend on you having run the thing before. Each part of the line is completed by whoever knows about it: The order is not alphabetical. What you use more, and used more recently, rises.
The first word comes from two sources because neither is enough on its own. The app reads $PATH from disk, which costs the shell nothing. But nvm, asdf and direnv rewrite $PATH after the session is born, and aliases and functions do not exist on disk — those the shell itself reports, per session. The result is the list you would see typing in your own terminal, not the one the app would guess.
⌘L (Ctrl+Alt+L off macOS) clears the screen without closing the session.

The history you already have

On first run, TYBA imports your shell history — zsh, bash and fish — so suggestions start out knowing what you run, instead of waiting for you to type it all again. It is read-only: your shell’s history files are not modified. To search inside it with scope and filters, see the command palette.

Who gets the keystroke

The TYBA line is not always the keyboard’s owner, and that is correctness rather than comfort: ssh, psql, python, sudo asking for a password — all of them read what you type during the command. A box that swallowed those keys would take your password and send it nowhere. Ctrl+C, Ctrl+D and Ctrl+Z reach the process even with the line focused — they are signals, not text. Ctrl+C also clears the box, which is what you expect from it.
While a command runs, the up and down arrows do not reach the program if the terminal is waiting for a whole line. There they would do nothing and would still show up as ^[[A in the stored output. In vim, htop, or a menu reading key by key, they pass through normally.

If something gets stuck

Alt+~ inside the terminal hands the shell prompt back right away, without closing the session or losing what is running.
It is the escape valve, and it exists because the heuristic can fail on a shell with an exotic configuration. To go back for good, turn the switch off in Settings — sessions already open stay as they are until you open another.

Where it works

Without the shell integration markers there is no way to know the shell is at the prompt. In that case TYBA falls back to the classic terminal instead of guessing.

See also

Command blocks

What the TYBA line turns on alongside it.

Shell integration

The prerequisite, and why it never touches your dotfiles.

Command palette

History and snippets live there too, with no dependency on this page.

User settings

Where the switch lives, and the rest of the Code section.