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 qQuit — press twice to confirm
Ctrl+CQuit immediately — even inside dialogs/menus
EscClose modal / exit edit mode (not quit)
[Toggle Source panel (line numbers)
]Toggle Detail panel (node preview)
Ctrl+EToggle Explorer fullscreen
🧭 Navigation, Folding & Search
/ k jMove cursor
PgUp PgDnJump 20 rows
gg / GJump to first / last row
Enter / SpaceFold / unfold Object or Array
/Incremental search — keys + values
n / NNext / previous match, wraps around
 Matches green; counter shown as [3/12]
📄 Format Notes
JSONKey order preserved
TOMLnull not supported on export
CSVDot-notation flatten; root: object or array
JSONLOne value/line ↔ array; else single line
Editing Values
eEdit selected scalar — type dropdown
Type: String / Number / Boolean / Null
EnterConfirm type → value editor
EscCancel edit
 Scalars only — Objects/Arrays show a hint
🧱 Editing Structure
rRename selected key (Object only)
aAdd child / sibling after (scalar)
wWrap in Array [n] or Object {k:n}
d / DDelete / duplicate node
y / p / PCopy / paste after / before
K / JMove node up / down
SSort Object children by key
E / CExpand all / collapse all
u / Ctrl+RUndo / redo — 50-level history
›_ CLI & Headless
--to <fmt>Headless conversion — no TUI
-o, --outputWrite to a file instead of stdout
--redact k1,k2Mask values (headless and Save-As)
cat f | jsonedStdin pipe — TUI on stderr
 s writes JSON to stdout, exits
Structural Lint
Tab / Shift+TabNext / previous lint warning
 Checks: empty keys "", depth > 20
 Orange row; auto-expands ancestors; clears on fix
🔌 Plugins & Saving
|Open Plugins menu (e.g. jq)
EnterPick → type argument → apply to node
 Replaces node in place — undo-able; no external binary
sSave to the original file
WSave 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 · [ / NNext / previous changed row
oToggle hiding unchanged rows
q / Esc / Ctrl+CQuit
 Read-only, structural — no edit/undo/search/save
Headless--to text|json [-o out]