VIM:重新格式化所有括号,parens和块括号

时间:2016-10-19 11:47:23

标签: vim formatting

我正在寻找一种方法,有这样的随机文字

[a: b -> {a, b, c}, d<1, 2>, b: [2, 3], (a, b)]

重新格式化为更易读的内容,例如:

[
    a: b -> {
        a,
        b,
        c
    },
    d<1, 2>,
    b: [
        2,
        3
    ],
    (
        a,
        b
    )
]

是否有人知道某些方法使用类似于示例的括号重新格式化文本?并不重要,格式与上面完全相同,只是为了便于阅读(文本比abc长得多。

目前,我正在使用此映射:

%j<CR>:%s/[\[{]\\|[\]}],\\|,/&\r/g<CR>gg=Ggg:nohls<CR>

效果不佳,需要额外清理。

1 个答案:

答案 0 :(得分:1)

我不认为这是将通用文本拆分为多行组件的通用方法,就像您描述的那样。我有一个名为splitjoin的插件试图做类似的事情,但它适用于特定编程语言中的特定结构。例如,lists and tuples in python。如果您查看完整的帮助文件,您可能会发现它适合您,但我无法肯定地说。您可以直接重复使用某些splitting and joining functions

我的另一个可能有帮助的插件是sideways,因为它为列表中的参数提供了一个文本对象(您可以在视觉上选择并在之后操作)。但是,在我的实验中,它似乎无法正确检测d<1, 2>,因此您可能必须创建检测<>括号的your own list definition(我不会将其设置为1 < 2在一般插件中,因为->等等。不幸的是,即便如此,在此之前它被{{1}}弄糊涂了。如果你在同一个列表中所有,我不认为这个插件可以提供帮助。

这不是一个解决方案,只是一个方向,我想。如果这是特定编程语言的代码,则可能有助于指定它是哪一种。