⌨ jsoned
jless, but you can actually edit things — JSON/YAML/TOML/CSV/JSONL viewer, editor & converter
v0.5.1 · MIT
crates.io/crates/jsoned
github.com/TSODev/jsoned
⌨ 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] |