Skip to main content
  1. Posts/

Work with JSON File in Neovim

·299 words·2 mins·
Table of Contents

In this post, I want to share how you can work effectively with JSON file inside Neovim.

Format JSON file
#

Use Python json module
#

If you have Python installed, you can use the following command to format JSON file:

:%!python -m json.tool

Use jq
#

Otherwise, we need to install jq for this:

brew install jq

Then open the JSON file and run the following command:

:%!jq .

In the above command, % means the whole file, !{some-command} will run the text in the external some-command and write the output back to replace the original text. See also :help :range! inside neovim.

Define a command for this
#

We can also define a command to format JSON file:

command! -range JSONFormat <line1>,<line2>!python -m json.tool

Then you can call %JSONFormat to format the JSON file.

Fold JSON file
#

Use the syntax fold
#

We can fold JSON file with the old syntax way:

set filetype=json
syntax on
set foldmethod=syntax

Use nvim-treesitter
#

If you are using nvim and nvim-treesitter. You can also use treesitter to fold JSON files.

Config for nvim-treesitter:

require("nvim-treesitter.configs").setup {
  ensure_installed = { "python", "cpp", "lua", "vim", "json" },
  ignore_install = {}, -- List of parsers to ignore installing
  highlight = {
    enable = true, -- false will disable the whole extension
    disable = { 'help' }, -- list of language that will be disabled
  },
}

Make sure that JSON parser for treesitter is installed.

Then create after/ftplugin/json.vim with following config:

set foldmethod=expr
set foldexpr=nvim_treesitter#foldexpr()

Open a valid JSON file, you should be able to see the files are folded properly.

References
#

Related

Migrating from Packer.nvim to Lazy.nvim
··651 words·4 mins
Pylsp setup for Neovim in 2023
··1020 words·5 mins
You Do Not Need a Plugin for This Feature
··424 words·2 mins