Dado un archivo con un objeto JSON grande, todo en una línea como
{"versions":[{"count":2,"version":""},{"count":1,"version":"1.1.1"},{"count":14,"version":"2.9"},{...
¿Cómo puedo formatear esto para que sea legible para humanos en Vim?
formatting
filetype-json
ljs.dev
fuente
fuente

Respuestas:
O puede instalar
jqcuál es más rápido (escrito en C) desde su administrador de paquetes (por ejemplo,sudo apt install jqen Ubuntu / Debian,sudo dnf install jqen Fedora / RHEL / CentOS) o desde la fuente y luego en vim, escriba:fuente
:%!jqFunciona igual de bien para mí..para mí. Me pregunto porque.Este one-liner funciona bien para formatear JSON en Vim en una forma legible para humanos:
:%!python -m json.toolfuente
:%!jq .respuesta en estos días, ya que hago menos con Python y suelojqinstalarme en mis sistemas para cualquier trabajo JSON en la CLI. También recibo notificaciones para esta pregunta SO con bastante frecuencia, por lo que me ayuda a no olvidar: PI prefiere vim con una personalización mínima, sin complementos, etc., que es otra razón por la cualjqmi solución ahora es mi preferida.Para formatear de manera determinista, necesitamos ordenar el hash. Ninguna de las otras respuestas hizo eso por mí, así que creé la mía:
Uso:
fuente
jqmencionado en las respuestas de SebMa tiene una--sort-keysopción que haría el trabajo. Pero también es genial escribir tu propia implementación :)Si PHP está disponible, agregue la herramienta
jfcomo formateador JSON de Composer:Luego formatee el archivo actual:
O agregue un mapa de teclas en vimrc:
fuente
Yo uso este
:Jsonfcomando. Puede formatear unicode.fuente