jiq 2.0.3

Interactive JSON query tool with real-time filtering using jq
jiq-2.0.3 is not a library.
Visit the last successful build: jiq-3.21.0

jiq

Interactive JSON query tool with real-time filtering and VIM keybindings

Features

  • Real-time query execution - See results as you type
  • Full VIM keybindings - Modal editing (INSERT/NORMAL/OPERATOR modes)
  • Syntax highlighting - Colorized JSON output
  • Flexible output - Export results or query string
  • Undo/redo support - Never lose your work
  • Zero configuration - Works out of the box

Installation

Requirements

From Source

git clone https://github.com/bellicose100xp/jiq
cd jiq
cargo build --release
sudo cp target/release/jiq /usr/local/bin/

Quick Start

# From file
jiq data.json

# From stdin
cat data.json | jiq
echo '{"name": "Alice", "age": 30}' | jiq
curl https://api.example.com/data | jiq

Usage

Workflow:

  1. Start typing your jq query (begins in INSERT mode)
  2. See results update in real-time
  3. Press Tab to navigate results
  4. Press Enter to output results, or Shift+Enter to output query

VIM users: Press ESC to enter NORMAL mode for advanced editing.

Keybindings

Key Action
Tab Switch focus between Input and Results
Enter Exit and output filtered JSON
Shift+Enter Exit and output query string only
q / Ctrl+C Quit without output
Key Action
Type characters Edit jq query (real-time execution)
/ Move cursor
Home / End Jump to line start/end
Backspace / Delete Delete characters
ESC Switch to NORMAL mode

Navigation

Key Action
h / Move left
l / Move right
0 / Home Line start
$ / End Line end
w Next word start
b Previous word start
e Word end

Editing

Key Action
i Enter INSERT at cursor
a Enter INSERT after cursor
I Enter INSERT at line start
A Enter INSERT at line end
x Delete char at cursor
X Delete char before cursor

Operators (delete/change + motion)

Key Action
dw / db / de Delete word forward/back/end
d$ / d0 Delete to end/start
dd Delete entire line
cw / cb / ce Change word forward/back/end
c$ / cc Change to end/entire line

Undo/Redo

Key Action
u Undo
Ctrl+r Redo
Key Action
j / k / / Scroll 1 line
J / K Scroll 10 lines
Ctrl+d / PageDown Scroll half page down
Ctrl+u / PageUp Scroll half page up
g / Home Jump to top
G Jump to bottom

Examples

Filter active users:

cat users.json | jiq
# Type: .users[] | select(.active == true)
# Press Enter to output results

Extract query for scripts:

cat data.json | jiq
# Experiment with: .items[] | select(.price > 100) | .name
# Press Shift+Enter to get just the query string

Pipeline integration:

# Build query interactively, then reuse
QUERY=$(echo '{}' | jiq)  # Press Shift+Enter after building query
echo $QUERY | xargs -I {} jq {} mydata.json

Tips

  • Empty query shows original JSON (identity filter .)
  • Invalid queries display jq errors in red
  • Color-coded modes: Cyan (INSERT), Yellow (NORMAL), Green (OPERATOR)
  • Results auto-scroll to top when query changes

License

Dual-licensed under MIT OR Apache-2.0

Contributing

Issues and pull requests welcome at github.com/bellicose100xp/jiq