The right pane kept showing the selected secret when you moved to Vaults or Sources. Now it follows focus: | focus | right pane | |---|---| | Sources | the account (group row), or the subscription / workspace / repo: name, note, ID / profile / path, host or remote, account, web page, vault count | | Vaults | the vault / scope / file: name, note, URI / backend / format, source, web page, counts of loaded secrets, keys, certificates | | Secrets | the secret, as before | | the right pane itself | what it described when you went in; `shift+tab` goes back there | All but the secret use the `Fields` pane (#7), so `j`/`k`, `/` and `y` work on them; `Detail` loses the error message it got in #4, which is now a red "problem" row in `Fields`. A value revealed from a left pane stays in view until hidden, so `space` from any pane still shows it. `tab` from a subscription goes to Vaults as before; only an account row skips to its details. This also changes the startup view: focus starts in Sources, so the right pane describes the first subscription instead of the first secret (golden output updated). Tests that read the secret pane focus Secrets first; a new test walks secret → vault → subscription → into the pane → back, and reveals from Sources. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Karl-Einar Bergstrøm <karl-einarb@outlook.com> Reviewed-on: #9
155 lines
6.8 KiB
Markdown
155 lines
6.8 KiB
Markdown
# Keys
|
||
|
||
`?` lists every key with what it does, the focused pane's first; type to
|
||
filter, `enter` runs one. The help bar at the bottom shows the most useful
|
||
keys for where you are. Every key can be [rebound](#rebinding-keys).
|
||
|
||
The rule: a letter in the lists, ctrl+ that letter where you type a filter
|
||
(`f` stars, `ctrl+f` stars while filtering).
|
||
|
||
## Moving around
|
||
|
||
| Key | Action |
|
||
|---|---|
|
||
| `j`/`k`, `↑`/`↓` | move |
|
||
| `g`/`G` | top / bottom |
|
||
| `tab`/`l`, `shift+tab`/`h` | next / previous pane |
|
||
| `1`–`4` | jump to pane |
|
||
| `enter` / `esc`, `⌫` | drill in / back (also clears a filter or leaves the versions view) |
|
||
| `[` / `]` | previous / next tab of the focused pane: Sources and Favourites in Sources; Secrets, Keys, Certs in Secrets |
|
||
| `/` | filter the focused list by name or note ([how it matches](#searching)); `enter` keeps it, `esc` clears it. While typing: `ctrl+j`/`ctrl+k` move, `ctrl+y` copies, `ctrl+r` reveals, `ctrl+f` stars |
|
||
| `` ` `` | switch the Sources pane between grouped by provider and a flat list; `enter`/`space` on a provider folds it |
|
||
| `r` | refresh the focused pane |
|
||
| `q`, `ctrl+c` | quit |
|
||
|
||
## Searching
|
||
|
||
`/` in a pane, Go to, `?` and other popups with a text field all search
|
||
the same way, with [fzf](https://github.com/junegunn/fzf)'s scoring (the
|
||
same as snacks.nvim's picker): letters at the start of a word or in one
|
||
run count far more than letters scattered through a name, matches in an
|
||
item's own name more than in its path or note, and equally good matches
|
||
put the shorter name first.
|
||
|
||
| Query | Finds |
|
||
|---|---|
|
||
| `dbpw` | fuzzy: `db-password` |
|
||
| `pass prod` | both terms, in any order |
|
||
| `smtp \| key` | either |
|
||
| `'prod` | exactly `prod`, not fuzzy |
|
||
| `^kv-` / `-dev$` | names starting / ending with it |
|
||
| `!test` | without `test` |
|
||
|
||
Lowercase ignores case; typing an uppercase letter makes that term
|
||
match case exactly.
|
||
|
||
## Secrets
|
||
|
||
| Key | Action |
|
||
|---|---|
|
||
| `space` | reveal / hide the selected value (public material for keys and certificates) |
|
||
| `y` | copy the value without revealing it; cleared from the clipboard after 30s. On an Azure account's row: its object ID; in its pane, the selected field or group |
|
||
| `Y` | copy the reference (`@Microsoft.KeyVault(...)`, key/certificate URL, `{{secrets/scope/key}}`) |
|
||
| `v` | versions of the selected item (Azure); `space`/`y`/`Y` then act on that version; `esc`, `⌫` or `v` to go back |
|
||
| `o` | open the selected item in the browser (over SSH: copy the link) |
|
||
| `e` | open the selected SOPS or `.env` file, or a secret's file at its line ([how](repos.md#opening-files)) |
|
||
| `s` / `S` | copy a [link](links.md) to the selected item / share menu |
|
||
| `ctrl+o` | open a link or reference (or just paste one) |
|
||
| `x` | [custom commands](custom-commands.md) |
|
||
| `L` | sign in again (shown when a login has expired) |
|
||
| `U` | a newer lazysecrets: its changelog, and update in place (restart to use it); or look for one |
|
||
|
||
A revealed value hides again after `revealTimeout` (60s) and when the
|
||
terminal loses focus (`hideOnBlur`); see [config](config.md).
|
||
|
||
## Stars and notes
|
||
|
||
| Key | Action |
|
||
|---|---|
|
||
| `f` | star the selected source, vault or secret: it gets a ★ and sorts first in its list |
|
||
| `n` | write a short note on it, shown dimmed on its row and in the detail pane |
|
||
|
||
A star belongs to the account you starred the item under; a note shows
|
||
under every account. Both are kept in the [state file](config.md#state).
|
||
|
||
## Go to
|
||
|
||
`ctrl+s` opens Go to on its Search tab, `F` on Favourites (everything you
|
||
starred) and `R` on Recent (what you used last). `enter` goes to the
|
||
selected item.
|
||
|
||
Search has the scope on the left (All; all of Azure, Databricks or repos;
|
||
or one source; with `○ ◐ ●` for how much of it is loaded) and what's in
|
||
it on the right. All repos searches every repo without asking Azure or
|
||
Databricks for anything. It opens on the
|
||
source you're in. Typing a search loads what it covers: everything on
|
||
All, else the source picked; results appear as lists arrive. That's once
|
||
each time Go to opens, and only what isn't loaded yet; `ctrl+a` loads
|
||
again, lists that failed included.
|
||
|
||
Like a pane, Go to is either browsing or typing a filter:
|
||
|
||
| Browsing | Typing | Action |
|
||
|---|---|---|
|
||
| `j`/`k` | `ctrl+j`/`ctrl+k` | move |
|
||
| `h`/`l`, `tab` | `ctrl+h`/`ctrl+l`, `tab` | scope list / results |
|
||
| `[` / `]` | | previous / next tab |
|
||
| `f` | `ctrl+f` | star |
|
||
| `r` | `ctrl+r` | load the selected item, or the scope when nothing is selected |
|
||
| `a` | `ctrl+a` | load everything in the scope (again) |
|
||
| `/` | `esc` | start typing / clear it and go back to browsing |
|
||
| `esc`, `q` | | close |
|
||
|
||
Favourites and Recent come from the state file, so they work before
|
||
anything loads.
|
||
|
||
## Layout
|
||
|
||
The pane on the right describes what's selected in the pane you're in: the
|
||
account or subscription in Sources, the vault in Vaults, the secret in
|
||
Secrets. Going into it (`4`, or `tab` from an account's row) keeps it on
|
||
that; there `j`/`k`, `/` and `y` work on its rows, and `shift+tab` goes
|
||
back. A value you reveal stays in view whichever pane you're in, until
|
||
it's hidden.
|
||
|
||
| Key | Action |
|
||
|---|---|
|
||
| `ctrl+←`/`ctrl+→` or `<`/`>` | move the divider between the left panes and the detail pane |
|
||
| `ctrl+↓`/`ctrl+↑` or `}`/`{` | make the focused left pane taller / shorter |
|
||
| `+` / `_` | zoom the focused pane: normal → half → full screen, and back |
|
||
| `=` | reset the layout (divider, heights, zoom) |
|
||
|
||
The divider and pane heights are remembered (zoom isn't). macOS uses
|
||
ctrl+arrows for Mission Control and switching desktops by default, hence
|
||
the `<` `>` `{` `}` alternatives.
|
||
|
||
## Rebinding keys
|
||
|
||
Every action can be rebound in the [config](config.md), per context:
|
||
|
||
```yaml
|
||
keybinding:
|
||
lists: # the panes, when not typing
|
||
star: [x] # replaces f
|
||
versions: [] # unbound
|
||
filter: # typing a filter in a pane
|
||
star: [ctrl+x]
|
||
popup: # popups with a text field: help, notes, open link, Go to while typing
|
||
down: [ctrl+j, down]
|
||
menu: # popups without a text field
|
||
search: # Go to's own actions while typing (on top of popup)
|
||
goto: # Go to while browsing
|
||
```
|
||
|
||
An action you set gets exactly the keys you list, replacing its defaults;
|
||
`[]` unbinds it. Actions you don't set keep their defaults, also across
|
||
layered config files. `lazysecrets keybindings` prints every action with
|
||
its keys (your config applied), ready to copy and edit. A key bound to two
|
||
actions that apply together is an error at startup, naming both. The help
|
||
bar, `?` and every hint show the keys you bound. Fixed: the letters inside
|
||
menus (they're part of each entry), and `ctrl+c`, which always quits.
|
||
|
||
Without the kitty keyboard protocol (or tmux `extended-keys`), some
|
||
combinations never reach a terminal app, such as `ctrl+shift+x`, `ctrl+1`
|
||
or `ctrl+enter`.
|