Hints
Put a short label on each URL, path, hash, address and number in a pane, then type the label to copy, paste or open the text.
Hints mode puts a short label on the useful text in the focused pane. Type a label to copy the text. It works like tmux-fingers and the kitty hints kitten. Hints mode can also put labels on all panes at once. See All panes.
Use it
- Press Ctrl+B F. The labels show and the rest of the pane dims. The mode pill in the dock shows
HINTS, and the other end of the dock shows the keys. - Type a label. TUIOS copies the text and closes hints mode.
| Keys | Does |
|---|---|
| A label, such as a or ls | Copy the text |
| The label with Shift, such as A | Copy the text and type it into the pane |
| The label with Ctrl, such as Ctrl+A | Open a URL or a path |
| Backspace | Remove the last letter you typed |
| ? | Close hints mode and show all of its keys in the help |
| Esc, or the leader key | Close hints mode |
| q | Close hints mode, when q is not a label letter |
| Ctrl+C, Ctrl+G | Close hints mode, when c or g is not a label letter |
The text nearest to the cursor gets the shortest label. The same text gets the same label each time it shows. A key that starts no label does nothing.
When c or g is a label letter, Ctrl+C and Ctrl+G open that label. g is in the default letters, so Ctrl+G opens the label g. Use Esc to close. The leader key always closes hints mode.
You can also open hints mode from the command palette. Search for hints.
Caps Lock
A terminal that reports Caps Lock (the Kitty keyboard protocol) lets TUIOS read an upper case letter from Caps Lock as a plain label letter. In other terminals, turn Caps Lock off before you type a label.
Hints mode keeps all input from the pane while the labels show. TUIOS drops a paste, a key release and a mouse move over the pane. A click or the mouse wheel closes hints mode first and then works as usual. Hints mode also closes when its pane closes, when focus moves to a different pane, and when you change the workspace.
The copy uses the same path as a mouse copy. TUIOS writes the clipboard with OSC 52. On a local client, it also uses the system clipboard tool.
All panes
The hints_all_panes action puts labels on all panes that the workspace shows. This includes tiled panes, floating panes and the focused pane.
- TUIOS gives no label to text that you cannot see. This includes a minimized pane, a pane behind a zoomed pane, a pane off the screen, and text under a different pane.
- Each label is different on all panes.
- The focused pane gets the shortest labels. The panes nearest to it get the next shortest labels.
- The same text gets the same label on all panes. A path or a
file://URL gets one label for each pane, because each pane has its own folder. - A label copies the text from any pane.
- Shift and a label types the text into the focused pane. The text can come from a different pane.
- Ctrl and a label opens the text from the pane that shows it. TUIOS uses that pane's folder and machine.
- Hints mode closes when one of these panes closes, moves or changes size.
The action has no default key. Run it from the command palette, or bind it:
[keybindings.prefix_mode]
hints_all_panes = ["A"]To make Ctrl+B F put labels on all panes, set hints.all_panes:
[hints]
all_panes = trueWhat hints mode finds
| Name | Examples |
|---|---|
url | https://example.com/a, git@github.com:user/repo.git |
path | /etc/hosts, ./run.sh, ~/notes.md, main.go:12:5 |
diff | The file in diff --git a/x b/x, --- a/x and modified: x |
sha | 149c8a8f, a full 40-character hash |
ip | 10.0.0.1, 10.0.0.0/8, 192.168.1.2:8080, fe80::1 |
uuid | 550e8400-e29b-41d4-a716-446655440000 |
color | #1e1e2e, #fa0 |
hex | 0xdeadbeef |
number | Numbers of 4 digits or more |
email | ops@example.com |
id | pod/web-1, deployment.apps/web, pod names, sha256: digests |
path and email accept letters in all scripts, with accents and combining marks. The other built-in patterns use only ASCII.
A URL ends at a space, a quote, a backtick or an angle bracket. A ) or a ] ends the URL when the URL did not open it. A pair that the URL opens stays in it, as in https://en.wikipedia.org/wiki/Go_(language). TUIOS removes .,;:!? from the end. So the markdown badge [](https://a.example/c) gives two URLs. The pointer uses the same rules to find a link. See Links.
A path that starts with / must not come directly after <, a letter, a digit or _. So </p> in HTML is not a path.
Hints mode reads only the text on the screen. If you scroll the pane back, it reads the lines you scrolled to. A URL that wraps onto the next row is one match. TUIOS joins two rows only when the terminal wrapped the text. A line that fills the row and then ends is not joined to the next line.
Open
Ctrl and a label opens the text:
- A URL opens in your browser. A remote client (
tuios ssh, the web client) copies the URL, because it cannot open a browser on your machine. - A path or a
file://URL opens in a new pane with$EDITOR. TUIOS removes a:line:colat the end. A relative path starts in the directory of the pane. - Other text is copied.
TUIOS opens a file only when the file is on this machine. In these cases, it copies the path and tells you why:
- The pane runs on another machine.
- The session runs on another machine (
tuios attachto a host). - The client is remote (
tuios ssh, the web client). - The pane runs
ssh,autossh,mosh,et,telnet,tsh,kitten(for examplekitten ssh),docker,kubectlorpodman. - The shell reported a folder on another machine.
- The path is relative and a program runs in front of the shell. TUIOS knows only the folder that the shell reported.
- The path is relative and TUIOS does not know the folder of the pane.
TUIOS never gives the text to a shell. It gives the text to the opener as one argument. Only http, https, mailto, ftp and ftps URLs open. The opener is the same as for Ctrl+click on a link. See Links.
Settings
Put the settings in the [hints] table of config.toml:
[hints]
# Built-in patterns: "all", "none", or names such as "url,path,sha".
builtins = "all"
# More patterns, as Go regular expressions. A group named "match"
# sets the part that is copied.
patterns = ['JIRA-\d+', 'branch: (?P<match>\S+)']
# The letters of the labels, easiest first. Lowercase letters only.
alphabet = "asdfghjkl"
# Let Ctrl and a label open the text.
open = true
# How much the text around the labels dims, in percent (10 to 90).
dim = 60
# Put labels on all panes on the workspace, not only on the focused pane.
all_panes = falseYour own patterns come before the built-in patterns. When a pattern does not compile, TUIOS shows a warning when it reads the config, and hints mode skips that pattern.
hints.builtins, hints.alphabet, hints.open, hints.dim and hints.all_panes are also on the settings page (Selection tab) and work with tuios set-config. hints.patterns is a list, so you set it in the file.
Change the key
The action is hints in [keybindings.prefix_mode]. To use a different key, bind it:
[keybindings.prefix_mode]
hints = ["f"]If your config already binds F in [keybindings.prefix_mode] to a different action, TUIOS keeps your binding and gives hints no key. tuios keybinds doctor tells you when this happens.