Interactively build jq expressions (gojq is also supported).
This zsh plugin gives you jq superpowers!
Fish users: you can use this friendly fork: rmartine-ias/jq-fish-plugin
Besides jq, this plugin also requires fzf (a recent version) to be installed and available on your PATH.
The following installation methods are proven to work:
- Clone the repository:
git clone https://github.com/reegnz/jq-zsh-plugin.git ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/jq
- Add the plugin to the list of plugins for Oh My Zsh to load (inside
~/.zshrc
):
plugins=(
# other plugins...
jq
)
- Start a new terminal session.
zplug reegnz/jq-zsh-plugin
antigen bundle reegnz/jq-zsh-plugin
zgen load reegnz/jq-zsh-plugin
- type out a command that you expect to produce json on its standard output
- press alt + j
- start typing jq expression and watch it being evaluated in real time (like a true REPL!)
- use up/down and hit tab to select one of the suggestions
- or type out a jq query on your own
- press enter, and the jq expression is appended to your initial command!
Bringing up the jq query builder for a shell command: alt + j
During interactive querying, the following shortcuts can be used:
Shortcut | Effect |
---|---|
ctrl-k or up |
Navigate path queries |
ctrl-j or down |
Navigate path queries |
tab |
Select path query |
ctrl-p or shift-up |
Scroll up |
ctrl-n or shift-down |
Scroll down |
ctrl-alt-p |
Scroll up half page |
ctrl-alt-n |
Scroll down half page |
alt-up |
Scroll up full page |
alt-down |
Scroll down full page |
ctrl-r |
Reload input |
ctrl-y |
Yank selected path to clipboard (GNU/Linux only) |
If you want to use an alternative jq
implementation, like gojq then you
can override the default jq command used by the plugin. Set the following environment variable:
JQ_REPL_JQ=gojq
The project consists of the following components:
- a
jq.plugin.zsh
providing a user-defined zsh line-editor widget, utilizing thejq-repl
command - a
jq-repl
command to interactively build jq expressions, utilizing fzf for its UI - a
jq-paths
command to get all valid jq paths in the provided JSON document, used for suggesting paths.
You need to remap your alt-key to Esc+
in iTerm2:
Cmd + ,
to enter preferences- Go to Profiles
- select your profile from the pane on the left hand side
- go to the keys tab
- Set Left Option (⌥ ) Key to
Esc+
See other suggestions on stackoverflow if the above one doesn't help you: https://stackoverflow.com/q/196357/205318
Another option is to map to ctrl+j
instead by putting this in your .zshrc
:
bindkey `^j` jq-complete
The plugin automatically expands shell aliases in a command before passing it to jq-repl
. To disable, put
the following line into your .zshrc
:
JQ_ZSH_PLUGIN_EXPAND_ALIASES=0