【发布时间】:2014-01-28 17:54:53
【问题描述】:
我在 vim 中打开了 autoindent 和 smartindent,但关闭了 nocindent。我正在尝试缩进一些 JSON 文本而不漂亮地打印整个内容,这太侵入性了:
{
"a" : "value1",
"b": "value2",
"c": "value3",
...
由 gg=G 格式化为:
{
"a" : "value1",
"b": "value2",
"c": "value3",
...
那里的逻辑是什么,如果可能的话,我可以设置哪些选项来修复它?我尝试切换 autoindent、smarindent 和 cindent 等选项(使用它们的“no”对应项),但它对 = 命令没有影响。我最近的尝试有以下选择:
autoindent
smartindent
nocindent
cinoptions=
indentexpr=
indentkeys=0{,0},:,0#,!^F,o,O,e
【问题讨论】:
-
对于另一种 JSON 漂亮的打印解决方案,请查看 python 的
json.tool。我做了一个快速的 vim 命令:command! -range -nargs=0 -bar JsonTool <line1>,<line2>!python -m json.tool。现在您可以通过:%JsonTool重新格式化整个缓冲区。 -
是的,这就是我最初所做的......使用那个 python 命令。但是,例如将数组元素放在单独的行上,这太麻烦了。有限的内置压头实际上更符合要求,尤其是使用 abjuk 的解决方案。不过还是谢谢……学习该命令真是太好了!技术。
标签: json vim macvim auto-indent