jsoned — Keyboard Reference

⌨ Global

`q` `q` | Quit — press twice to confirm
`Ctrl+C` | Quit immediately — even inside dialogs/menus
`Esc` | Close modal / exit edit mode (not quit)
`[` | Toggle Source panel (line numbers)
`]` | Toggle Detail panel (node preview)
`Ctrl+E` | Toggle Explorer fullscreen

🧭 Navigation, Folding & Search

`↑` `↓` / `k` `j` | Move cursor
`PgUp` `PgDn` | Jump 20 rows
`gg` / `G` | Jump to first / last row
`Enter` / `Space` | Fold / unfold Object or Array
`/` | Incremental search — keys + values
`n` / `N` | Next / previous match, wraps around
| Matches green; counter shown as [3/12]

📄 Format Notes

JSON | Key order preserved
TOML | null not supported on export
CSV | Dot-notation flatten; root: object or array
JSONL | One value/line ↔ array; else single line

✎ Editing Values

`e` | Edit selected scalar — type dropdown
`↑` `↓` | Type: String / Number / Boolean / Null
`Enter` | Confirm type → value editor
`Esc` | Cancel edit
| Scalars only — Objects/Arrays show a hint

🧱 Editing Structure

`r` | Rename selected key (Object only)
`a` | Add child / sibling after (scalar)
`w` | Wrap in Array [n] or Object {k:n}
`d` / `D` | Delete / duplicate node
`y` / `p` / `P` | Copy / paste after / before
`K` / `J` | Move node up / down
`S` | Sort Object children by key
`E` / `C` | Expand all / collapse all
`u` / `Ctrl+R` | Undo / redo — 50-level history

›_ CLI & Headless

--to <fmt> | Headless conversion — no TUI
-o, --output | Write to a file instead of stdout
--redact k1,k2 | Mask values (headless and Save-As)
cat f | jsoned | Stdin pipe — TUI on stderr
| `s` writes JSON to stdout, exits

⚠ Structural Lint

`Tab` / `Shift+Tab` | Next / previous lint warning
| Checks: empty keys "", depth > 20
| Orange row; auto-expands ancestors; clears on fix

🔌 Plugins & Saving

`|` | Open Plugins menu (e.g. jq)
`Enter` | Pick → type argument → apply to node
| Replaces node in place — undo-able; no external binary
`s` | Save to the original file
`W` | Save as — format, then filename
| JSON · YAML · TOML · CSV · JSONL
| Optional redact-keys step in between (blank = skip)

⇄ Diff Mode --diff b.json

`j` `k` / `↓` `↑` | Move cursor
`]` / `n` · `[` / `N` | Next / previous changed row
`o` | Toggle hiding unchanged rows
`q` / `Esc` / `Ctrl+C` | Quit
| Read-only, structural — no edit/undo/search/save
Headless | --to text|json [-o out]