【问题标题】:Pretty Printing Arbitrarily Nested Dictionaries & Lists in Vim在 Vim 中漂亮地打印任意嵌套的字典和列表
【发布时间】:2016-03-08 07:14:20
【问题描述】:

我遇到过几种情况,我在 vim 中列出和字典数据,具有任意嵌套的数据结构,即:

a = [ 'somedata', d : { 'one': 'x', 'two': 'y', 'three': 'z' }, 'moredata' ]
b = { 'one': '1', 'two': '2', 'three': [ 'x', 'y', 'z' ] }

我真的很想有办法以表格格式“漂亮地打印”它们。在 vim 中直接将它们简单地视为 JSON 会特别有帮助。有什么建议吗?

【问题讨论】:

  • 你能举一个期望输出的例子吗?请注意,您的第一个示例 a 变量在 Vim 中不是有效的结构。

标签: json list dictionary vim pretty-print


【解决方案1】:

您可能想看看 Tim Pope 的 Scriptease.vim,它为 vim 脚本和插件开发提供了许多细节。

虽然我不确定:PP 有多漂亮,但我发现它已经足够我使用了。

还应该注意的是,vim 脚本字典和数组与 JSON 非常相似,所以理论上你可以在一些清理之后使用任何 JSON 工具。

【讨论】:

    【解决方案2】:

    如果你的文字是合法的json,可以转外部python -m json.tool

    所以,你只需在 vim 中执行:%!python -m json.tool

    不幸的是,如果您采用带有嵌套 dict/lists 的有效 json 示例,您的示例将不起作用:

    注意

    在截屏中我有ft=json,所以在正常模式下看不到一些引号,我使用的文本:

    [{"test1": 1, "test2": "win", "t3":{"nest1":"foo","nest2":"bar"}}, {"test1": 1, "test2": "win", "t3":{"nest1":"foo","nest2":"bar"}}, {"test1": 1, "test2": "win", "t3":{"nest1":"foo","nest2":"bar"}}, {"test1": 1, "test2": "win", "t3":{"nest1":"foo","nest2":"bar"}}]
    

    【讨论】:

    猜你喜欢
    • 2011-03-14
    • 1970-01-01
    • 2020-10-23
    • 2017-02-22
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 2011-11-26
    • 2016-11-26
    相关资源
    最近更新 更多