在vim中仅对文件的部分内容进行JSON美化格式。

5
在VIm中,有没有一种方法可以将JSON代码以“漂亮”的格式打印在文件中?
例如,有以下文件:
# a comment
def my_func():
    pass

{"bla": [1, 2, 3], "yes": false}  # <--- pretty print this

# another comment
<foo>why do I mix everything in one file?</foo>
<bar>it's an example, dude</bar>

我想把标记的那行改成:
{
   "bla":[
      1,
      2,
      3
   ],
   "yes":false
}

我正在寻找类似于:%!python -m json.tool的东西,但只针对所选行。
2个回答

12

指定行号应该可以正常工作。例如:

:5!python -m json.tool

或者如果需要多行:

:4,6!python -m json.tool

显然...啊。谢谢! - ezdazuzena
2
你也可以使用可视模式选择行,然后在输入 : 时自动填充范围。 - Robbie
告诉大家一声 - 在这个工作中不需要安装任何东西,因为它依赖于Python内置的json库:https://docs.python.org/3/library/json.html#module-json.tool - undefined

0
一个基于正则表达式的解决方案是:
``` :%s/\({\)\|\(\[\)\|\(,\)\|\(\]\)\|\(}\)/\1\2\3\r\4\5/g ```
接着执行:`=gg` 输出结果为:
{
   "bla": [
      1,
      2,
      3
   ],
   "yes": false
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接