En vim, el valor predeterminado de sangría para JSON es:

{
    "employees": [
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName":"Jones" }
    ]
}

Pero lo que espero es:

{
    "employees": [
    { "firstName":"John" , "lastName":"Doe" }, 
    { "firstName":"Anna" , "lastName":"Smith" }, 
    { "firstName":"Peter" , "lastName":"Jones" }
    ]
}

Me hizo google y trató de vim-json plugins, pero ninguno de ellos solucionar este problema.

  • Has intentado buscar en la fuente de los plugins?
  • Muchas gracias por la rápida respuesta. Soy normal vim usuario, no es un usuario avanzado. No sé cómo escribir plugins. Así que, no, no he intentado buscar en la fuente de los plugins.
  • El guión script contenida en este plugin hace lo que pides.
  • romainl, muchas gracias por introducir el plugin. que funciona muy bien. ¿por qué no responder a la pregunta, en lugar de dejar un comentario?
  • github.com/jakar/vim-json por la victoria. ahora puedes encontrar un guión decente para javascript?
  • pangloss del repo es prácticamente el mejor JS del plugin que yo sepa.

InformationsquelleAutor user2309998 | 2013-05-18

6 Comentarios

  1. 30

    Manera más fácil, es solo externa de comando como filtro para una selección. por ejemplo,

    1. Hacer una selección
    2. Tipo :!python -m json.tool
    • Esto funcionó para mí. Y para todo el archivo, se puede hacer :%!python -m json.tool.
  2. 25

    romainl recomendación es la forma preferida, pero a veces se necesita bastante guión JSON texto dentro de un buffer que no tiene la json tipo de archivo. Yo uso este comando nice:

    command! -range -nargs=0 -bar JsonTool <line1>,<line2>!python -m json.tool

    Sólo tiene que ejecutar :JsonTool y va bastante impresión de la línea actual. Se puede tomar un rango así:

    :JsonTool
    :'<,'>JsonTool
    :10,25JsonTool

    Si usted no tiene python o prefieren un puro vim solución que usted puede estar interesado en el Tim del Papa jdaddy plugin. Jdaddy proporciona JSON objetos de texto: aj y ij así como de impresión de impresión de formato JSON, por ejemplo,gqaj.

    • Esto es IMPRESIONANTE, muchas gracias.
    • Ten cuidado, si el uso de python2 se ordenan de propiedades por orden alfabético, así que te recomendamos siempre el uso de python3 cuando se hace esto.
  3. 13

    Puede enviar a una herramienta externa, como un ejemplo, si usted tiene python puede enviar el contenido de python json herramienta de uso:

    :%!python -m json.tool
  4. 7

    python -m json.tool reordena la posición del objeto JSON propiedades, si usted tiene el nodo instalado, puede utilizar esta función:

    function FormatJSON(...) 
      let code="\"
            \ var i = process.stdin, d = '';
            \ i.resume();
            \ i.setEncoding('utf8');
            \ i.on('data', function(data) { d += data; });
            \ i.on('end', function() {
            \     console.log(JSON.stringify(JSON.parse(d), null, 
            \ " . (a:0 ? a:1 ? a:1 : 2 : 2) . "));
            \ });\""
      execute "%! node -e " . code 
    endfunction

    Asignan a f-j en .vimrc

    nmap fj :<C-U>call FormatJSON(v:count)<CR>

    También puede pasar un número de espacios para una ficha, 2 son el valor predeterminado si no se especifica ninguna.

    4fj

    Mi completa .vimrc es aquí https://github.com/botverse/.dotfiles/blob/master/.vimrc

    • tales wow! impresionante punta!
  5. 2

    gg=G es lo que usted necesita si usted está usando vim.

    • +1 porque esto es bueno si el objeto JSON ya está en diferentes líneas, pero la json.tool método trata los objetos que están todos agrupados en una sola línea.

Dejar respuesta

Please enter your comment!
Please enter your name here