.\" Generated by scdoc 1.11.5 .\" Complete documentation for this program is not available as a GNU info page .ie \n(.g .ds Aq \(aq .el .ds Aq ' .nh .ad l .\" Begin generated content: .TH "ijq" "1" "2026\-07\-23" .PP .SH NAME .PP ijq \- interactive jq .PP .SH SYNOPSIS .PP \fBijq\fR [\fB\-cnsrjaRMCSV\fR] [\fB\-f\fR \fIfile\fR] [\fIfilter\fR] [\fIfiles .\&.\&.\&\fR] .PP .SH DESCRIPTION .PP \fBijq\fR is a near drop\-in replacement for \fBjq\fR that allows you to interactively see the results of your filter as you construct it.\& .PP \fBijq\fR contains two panes and an input field: the left pane is the original, unmodified input data and the right pane contains the filtered output.\& When you are finished, press Return to exit.\& The filtered output will be written to standard output and the filter itself will be written to standard error.\& .PP \fBijq\fR maintains a history of used filters unless disabled via \fBhistory\-file\fR in the config file.\& Delete all text in the filter field to browse any available history.\& .PP If \fIfiles\fR is omitted then \fBijq\fR reads data from standard input.\& .PP An interactive menu is available with the \fBtoggle\-menu\fR action (default: \fBCtrl\-/\fR, \fBCtrl\-?\&\fR, or \fBCtrl\-_\fR).\& .PP All of the options mirror their counterparts in \fBjq\fR.\& The options are: .PP \fB\-c\fR .RS 4 Use compact instead of pretty\-printed output.\& .PP .RE \fB\-n\fR .RS 4 Don'\&t read any input.\& Useful for using \fBijq\fR as a calculator or to construct JSON data from scratch.\& .PP .RE \fB\-s\fR .RS 4 Read all input into a single array and apply the given filter to it.\& .PP .RE \fB\-r\fR .RS 4 If the filter output is a string it will be written directly to standard output rather than being formatted as a JSON string with quotes.\& Useful for using \fBijq\fR in a pipeline with other programs that expect normal string input.\& .PP .RE \fB\-j\fR .RS 4 Implies \fB\-r\fR and outputs without a trailing newline after each result.\& .PP .RE \fB\-a\fR .RS 4 Output strings by using only ASCII characters and escape sequences.\& .PP .RE \fB\-R\fR .RS 4 Don'\&t parse the input as JSON, instead passing each line of input to the filter as a string.\& If combined with \fB\-s\fR then the entire input is passed to the filter as a single long string.\& .PP .RE \fB\-M\fR .RS 4 Disable colored output.\& .PP .RE \fB\-C\fR .RS 4 Force colored output.\& .PP .RE \fB\-S\fR .RS 4 Output the fields of each object with the fields in sorted order.\& .PP .RE \fB\-f\fR \fIfile\fR .RS 4 Read the filter from \fIfile\fR.\& When this option is used, all positional arguments (if any) are interpreted as input files.\& .PP .RE .SH CONFIG FILE .PP \fBijq\fR reads configuration from \fI$XDG_CONFIG_HOME/ijq/config\fR.\& If \fI$XDG_CONFIG_HOME\fR is not set, then the fallback path is \fI\(ti/.\&config/ijq/config\fR.\& .PP The file format is \fBscfg\fR.\& All settings are optional.\& If a setting is present both in the config file and on the command line, the command\-line value takes precedence.\& .PP \fBhistory\-file\fR \fIfile\fR .RS 4 Path to the history file.\& If set to '\&'\& then history is disabled.\& .PP .RE \fBjq\-bin\fR \fIfile\fR .RS 4 Name of or path to the \fBjq\fR binary to use.\& .PP .RE \fBhide\-input\-pane\fR \fIbool\fR .RS 4 If true, start with the input (left) viewing pane hidden.\& .PP .RE \fBcopy\-filter\-to\-clipboard\-on\-exit\fR \fIbool\fR .RS 4 If true, copy the current filter to the clipboard when exiting with the \fBsubmit\-filter\fR action (default: \fBReturn\fR).\& The filter is copied before the output is written to stdout, so it is copied even if writing the output subsequently fails.\& Exiting with \fBCtrl\-C\fR never writes to the clipboard.\& .PP .RE \fBkeymaps\fR .RS 4 Section containing key bindings.\& Any entry not set keeps its built\-in default value.\& .PP Bindings are written as key names (\fBCtrl+N\fR, \fBShift+Up\fR, \fBReturn\fR) or single runes (\fBu\fR, \fBG\fR).\& \fI+\fR and \fI\-\fR can both be used between modifiers and key names, for example \fBCtrl+N\fR and \fBCtrl\-N\fR.\& .PP When the filter input field has focus, printable runes are always treated as text input.\& To bind a global command while editing the filter, use a non\-printable key or a modifier combination.\& .PP Available entries are: \fBsubmit\-filter\fR, \fBmove\-down\fR, \fBmove\-up\fR, \fBpage\-down\fR, \fBpage\-up\fR, \fBscroll\-to\-top\fR, \fBscroll\-to\-bottom\fR, \fBhalf\-page\-up\fR, \fBhalf\-page\-down\fR, \fBline\-start\fR, \fBline\-end\fR, \fBcursor\-right\fR, \fBcursor\-left\fR, \fBfocus\-input\-pane\fR, \fBfocus\-output\-pane\fR, \fBfocus\-filter\-input\fR, \fBnext\-focus\fR, \fBprevious\-focus\fR, \fBtoggle\-input\-pane\fR, \fBsave\-filter\-history\fR, \fBnext\-autocomplete\fR, \fBprevious\-autocomplete\fR, \fBtoggle\-menu\fR, \fBcopy\-filter\-to\-clipboard\fR, \fBcopy\-output\-to\-clipboard\fR.\& .PP .RE .SH KEY BINDINGS .PP These are the default key bindings.\& They can be overridden in the \fBkeymaps\fR section of the config file.\& .PP \fBShift + Up\fR, \fBShift + Left\fR .RS 4 Focus the input (left) viewing pane (\fBfocus\-input\-pane\fR).\& .PP .RE \fBShift + Right\fR .RS 4 Focus the output (right) viewing pane (\fBfocus\-output\-pane\fR).\& .PP .RE \fBShift + Down\fR .RS 4 Focus the text (filter) input field (\fBfocus\-filter\-input\fR).\& .PP .RE \fBTab\fR .RS 4 When the text (filter) input field has focus, trigger autocompletion or navigate between the autocompletion list (\fBnext\-autocomplete\fR).\& When one of the viewing panes has focus, toggle between the different views (\fBnext\-focus\fR).\& .PP .RE \fBShift\-Tab\fR .RS 4 Like \fBTab\fR, but moves in the opposite direction (\fBprevious\-autocomplete\fR, \fBprevious\-focus\fR).\& .PP .RE \fBCtrl\-A\fR .RS 4 When the text input field has focus, move the cursor to the beginning of the input.\& When one of the viewing panes has focus, set the column offset to 0 (\fBline\-start\fR).\& .PP .RE \fBCtrl\-E\fR .RS 4 When the text input field has focus, move the cursor to the end of the input.\& When one of the viewing panes has focus, set the column offset to view the longest visible line (\fBline\-end\fR).\& .PP .RE \fBCtrl\-F\fR .RS 4 When the text input field has focus, move the cursor one character forward (\fBcursor\-right\fR).\& When one of the viewing panes has focus, scroll down one page (\fBpage\-down\fR).\& .PP .RE \fBCtrl\-B\fR .RS 4 When the text input field has focus, move the cursor one character backward (\fBcursor\-left\fR).\& When one of the viewing panes has focus, scroll up one page (\fBpage\-up\fR).\& .PP .RE \fBCtrl\-D\fR .RS 4 When the text input field has focus, delete the character under the cursor.\& When one of the viewing panes has focus, scroll down one half page (\fBhalf\-page\-down\fR).\& .PP .RE \fBCtrl\-U\fR .RS 4 When the text input field has focus, delete all of the text from the cursor to the beginning of the field.\& When one of the viewing panes has focus, scroll up one half page (\fBhalf\-page\-up\fR).\& .PP .RE \fBCtrl\-O\fR .RS 4 Toggle visibility of the input (left) viewing pane (\fBtoggle\-input\-pane\fR).\& .PP .RE \fBCtrl\-S\fR .RS 4 Save the current filter to history and show a confirmation popup (\fBsave\-filter\-history\fR).\& .PP .RE \fBCtrl\-/\fR, \fBCtrl\-?\&\fR, \fBCtrl\-_\fR .RS 4 Open or close the overlay menu (\fBtoggle\-menu\fR).\& .PP .RE \fBSpace\fR .RS 4 When the overlay root menu is open, activate the selected menu entry.\& When the Configure subview is open, toggle the selected option.\& .PP .RE \fBEnter\fR, \fBReturn\fR .RS 4 When the Configure subview is open, toggle the selected option.\& When the Manage history subview is open, apply the selected history entry to the filter and close the overlay (\fBsubmit\-filter\fR).\& .PP .RE \fBx\fR .RS 4 When the Manage history subview is open, delete the selected history entry after confirmation.\& .PP .RE \fB/\fR .RS 4 When the Manage history subview is open, open a filter input for history entries.\& .PP .RE \fBEsc\fR, \fBCtrl\-C\fR, \fBq\fR .RS 4 When overlay is open, go back to the root menu or close overlay.\& .PP .RE \fBu\fR, \fBd\fR, \fBf\fR, \fBb\fR .RS 4 When one of the viewing panes has focus, scroll a half/full page up/down.\& .PP .RE \fBg\fR .RS 4 When one of the viewing panes has focus, scroll to the top (\fBscroll\-to\-top\fR).\& .PP .RE \fBG\fR .RS 4 When one of the viewing panes has focus, scroll to the bottom (\fBscroll\-to\-bottom\fR).\& .PP .RE \fBLeft\fR, \fBDown\fR, \fBUp\fR, \fBRight\fR \fBh\fR, \fBj\fR, \fBk\fR, \fBl\fR .RS 4 When one of the viewing panes has focus, move the view left/down/up/right.\& .PP .RE \fBReturn\fR .RS 4 Close \fBijq\fR.\& Write the contents of the output pane to stdout and the current input filter to stderr.\& The current input filter is also saved to the history file.\& .PP .RE \fBCtrl\-C\fR .RS 4 When overlay is open, close overlay.\& When the filter input is focused and non\-empty, clear the filter input.\& Otherwise, exit \fBijq\fR immediately without writing anything to stdout or stderr.\& .PP .RE .SH DEMO .PP See https://asciinema.\&org/a/496932 for a demo.\& .PP .SH SEE ALSO .PP jq(1) .PP .SH AUTHOR .PP Gregory Anders