182

I'm using SublimeText.

How to reindent Json code with a shortcut?

I've already installed packageControl and it works.

I already tried JsonReindent package but it has not a shortcut by default and i don't know its command name.

I already have this command (from my previous sublimetext2 on another pc, where it works fine):

// JSON reindent
{ "keys": ["ctrl+shift+j", "ctrl+shift+j"], "command": "json_reindent" },

But here it doesn't work.

user2342558
  • 5,567
  • 5
  • 33
  • 54

9 Answers9

245

I have come across this issue too. I tried to figure it out by install jsFormat as follows:

  1. Open Package Control panel command+shift+p (mac), install package.

  2. Install jsFormat.

  3. Edit the shortcut for the jsformat: sublime text preferences, package settings, jsFormat

  4. Choose Key-Binding user, then edit

    [
      {
        "keys": [
          "command+l"
        ],
        "command": "reindent"
      },
      {
        "keys": [
          "ctrl+shift+s"
        ],
        "command": "auto_save"
      }, 
      {
        "keys": [
          "ctrl+alt+f"
        ],
        "command": "js_format"
      }
    ]
    
  5. So next time when you try to format json code, just use ctrl+option+f for mac. Not mac, just use ctrl+alt+f

That's all.

starball
  • 20,030
  • 7
  • 43
  • 238
pigfly
  • 3,348
  • 2
  • 13
  • 11
155

Install this packages via CMD + SHIFT + P > Install package > Search for Pretty JSON and install.

enter image description here

And then turn ugly json via CMD + CTRL + J (OSX) CTRL + ALT + J (Windows/Linux) in pretty JSON!

Source is on GitHub. Credit

ArNo
  • 2,278
  • 1
  • 22
  • 19
109

For sublime 4 below work for me on MAC OS :

Install "Pretty JSON" sublime 4 by referring below:

  • Use key combination Cmd + Shift + p and type Install Package
  • Select Package Control: Install Package from the search results
  • Type Pretty JSON and select it from the search results

OR use "Manual Installation" steps of below link

https://packagecontrol.io/packages/Pretty%20JSON


now for shortcut :

Click on Sublime -> Preferences -> Key Bindings

Here add the below json part inside existing json and save the file

{ "keys": [ "ctrl+shift+j" ], "command": "pretty_json" }

you can use cmd too instead of ctrl, set says as per your preference

Complete json will look like below:

[{
    "keys": [
      "command+l"
    ],
    "command": "reindent"
  },
  {
    "keys": [
      "ctrl+shift+s"
    ],
    "command": "auto_save"
  },
  {
    "keys": [
      "ctrl+shift+k"
    ],
    "command": "js_format"
  },
  {
    "keys": [
      "ctrl+shift+j"
    ],
    "command": "pretty_json"
  }
]

Now use below short key anytime to beautify json on sublime

ctrl+shift+j

You can also use command instead of ctrl

enter image description here

Shubham Jain
  • 16,610
  • 15
  • 78
  • 125
32

For Mac OS follow the steps:

Install Pretty JSON

  1. Use key combination Cmd + Shift + p and type Install Package
  2. Select Package Control: Install Package from the search results
  3. Type Pretty JSON and select it from the search results

Add Key Binding

  1. Open key bindings from Sublime Text > Preferences > Key Bindings

  2. Add following key short cut in key bindings

    { "keys": [ "command+shift+j" ], "command": "pretty_json" }

Use Pretty JSON

  1. Select JSON text and use key combination Cmd + Shift + j
Aamir
  • 16,329
  • 10
  • 59
  • 65
12

If you look at the source, the name of the sublime_plugin.TextCommand subclass is SublimeJsonReindentCommand. Per the conventions for command names, the resulting command is named sublime_json_reindent. Simply change your key binding to:

{ "keys": ["ctrl+shift+j", "ctrl+shift+j"], "command": "sublime_json_reindent" },

and you should be all set.

MattDMo
  • 100,794
  • 21
  • 241
  • 231
  • The command does nothing. In the console nothing appears. If i put the command directly in the console: `>>> sublime_json_reindent Traceback (most recent call last): File "", line 1, in NameError: name 'sublime_json_reindent' is not defined` – user2342558 Jan 20 '16 at 15:59
  • @user2342558 in the console, run `view.run_command("sublime_json_reindent")` and let me know what happens. Make sure you have a JSON file open and some text selected. – MattDMo Jan 20 '16 at 16:12
  • @user2342558 are you sure you have [JSON Reindent](https://packagecontrol.io/packages/JSON%20Reindent) installed? – MattDMo Jan 20 '16 at 17:30
  • I'm sure. It appear in the package control. I also already reinstalled it through package control. – user2342558 Jan 20 '16 at 22:30
  • Could be related with - https://forum.sublimetext.com/t/cant-open-user-keybinding-settings-for-packages/13152 – Saikat Nov 23 '20 at 08:01
9

Sublime Text with JSON formatter

You can use Command Palette to format a text

  1. Install SublimePrettyJson

2.1 Format using Command Palette

//Call Command Palette
Ctrl+Shift+P

//Format code instead of  CMD + CTRL + J (OSX)
pretty format

2.2 Format using custom shortcut

Sublime Text -> Settings... -> Key Bindings

//{ "keys": [ "<custom_shortcut >" ], "command": "pretty_json" }
{ "keys": [ "ctrl+i" ], "command": "pretty_json" }

enter image description here

yoAlex5
  • 29,217
  • 8
  • 193
  • 205
5

I am using Linux OS. I found the solution first installing the package controller then Pretty JSON package.

  1. Install the package controller for sublime here

  2. Install Pretty JSON packages via CMD + SHIFT + P > Install package > Search for Pretty JSON and install. Details are here.

ecamur
  • 99
  • 1
  • 4
1

Since version 4 it is available under the Selection -> Format -> JSON menu option.

enter image description here

David Welborn
  • 375
  • 2
  • 7
0

Open the Command Palette: Press Ctrl+Shift+P (Windows) or Cmd+Shift+P (OS X). Type 'install' in the Command Palette input box, which should autocomplete to 'Install Package Control'. enter image description here

Then go to Sublime Text -> Preferences -> Package Control -> Type Package Control: Install Package in the pop up box which would open a separate pop up box and in that type the package you want to install in this case "Pretty JSON"

Turn ugly json to pretty JSON via CMD + CTRL + J (OS X)

Aravind Krishnakumar
  • 2,727
  • 1
  • 28
  • 25
  • 1
    Hi, what's the purpose of your answer? "Pretty JSON" is already suggested in other answers here. – user2342558 Dec 17 '21 at 09:44
  • 2
    I felt the some initial steps were missing and so I added this answer. I was struggling to install Pretty JSON since the answers did not explain how to install "Package Control" first. Only after installing Package Control you can install "Pretty JSON". – Aravind Krishnakumar Dec 17 '21 at 22:44