Vim:将列表拆分到新行

时间:2015-03-19 14:16:55

标签: vim replace

是否有可以更改的Vim命令(我猜测搜索和替换?):

listThing(["fish", "monkey", "cat", "penguin"])

成:

listThing([
    "fish",
    "monkey",
    "cat",
    "penguin"
])

不只是在逗号后面添加换行符和制表符,因为第一行和最后一行也需要分开。

2 个答案:

答案 0 :(得分:2)

不知道你的文件中还有什么可能与简单方法相匹配的是:

:1,$s/\("[^ ,]*"\|\])\)/\r    \1/g

哪能得到你:

listThing([
    "fish",
    "monkey",
    "cat",
    "penguin"
    ])

编辑:正如我上面所述,但会再次强调:这对您有用的程度可能取决于您文件中的其他类似结构。其他选项包括使用Ingo建议的插件,或在awkperl<insert-favorite-script-language-here>中编写单独的脚本。

答案 1 :(得分:2)

对于特定情况,@ lurker的答案提出的:substitute命令就足够了。不幸的是,对于许多编程语言,可能存在结构嵌套,并且很难正确处理所有这些。因此,对于一个强大的“不要让我思考”的解决方案,我认为你需要一个插件。虽然我还没有尝试过,argwrap plugin提供了这个。