Files
lazysecrets/docs/keys.md
T
kebandClaude Opus 5.5 57aec8a381
CI / Checks (pull_request) Successful in 23s
PR title / Conventional title (pull_request) Successful in 1s
feat: ctrl+s searches everything; again narrows to the source you're in
Go to opens on All instead of the source you're in, so a search finds
anything at once. ctrl+s again in Go to narrows to that source, and once
more goes back to All; the hint names it. g/G go to the top and bottom
of a list while browsing, and the tabs are Search, Favourites, Recent.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-12 11:45:53 +02:00

7.9 KiB
Raw Blame History

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.

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, shift+tab/h next / previous pane
l the details of what's selected, on the right (h goes back)
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); 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'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
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)
s / S copy a link to the selected item / share menu
ctrl+o open a link or reference (or just paste one)
x custom commands
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 is shown as it reads best: JSON indented, and PEM certificates as their subject, issuer, dates, names and thumbprint, with any other PEM block (a private key) named but not shown. y still copies it exactly as stored.

A revealed value hides again after revealTimeout (60s) and when the terminal loses focus (hideOnBlur); see config.

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.

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 All; ctrl+s again narrows it to the source you're in, and once more goes back to All. 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
g/G top / bottom
ctrl+s ctrl+s only the source you're in / All
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 (l, or 4) keeps it on that; there j/k, / and y work on its rows, and h goes back. A value you reveal stays in view whichever pane you're in, until it's hidden.

On top, the status pane (0) shows the version, a newer release and how your accounts are doing. Focused, the right pane lists more under the logo (when there's room): the version and updates (U), each account (L on one that needs it signs in), what's expiring (enter goes to it), this session's errors, newest first (what a pane showed, or the footer flashed before you moved on; not kept after quitting), the config, state and cache files (e opens one in your editor), and links to the docs, source, issues, releases and changelog (o opens one; on the version or update, its release), then the changelog of every release up to yours, built in so it needs no network: / filters it (/fixed, /search). y copies any row.

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, per context:

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.