Vim:将列表拆分为新行
Vim: Splitting a list onto new lines
是否有可以更改的 Vim 命令(我猜是搜索和替换?):
listThing(["fish", "monkey", "cat", "penguin"])
进入:
listThing([
"fish",
"monkey",
"cat",
"penguin"
])
不仅仅是在逗号后添加换行符和制表符,因为首行和末行也需要分开。
不知道您的文件中还有什么可以匹配的简单方法是:
:1,$s/\("[^ ,]*"\|\])\)/\r /g
哪个会让你:
listThing([
"fish",
"monkey",
"cat",
"penguin"
])
编辑: 如上所述,但我会再次强调:这对您的效果如何可能取决于您文件中的其他类似构造。其他选项是使用 Ingo 建议的插件,或者在 awk
、perl
或 <insert-favorite-script-language-here>
.
中编写单独的脚本
对于特定情况,@lurker 的回答提出的 :substitute
命令就足够了。不幸的是,对于许多编程语言,可能存在结构嵌套,并且很难正确处理所有这些。因此,对于稳健的 "don't make me think" 解决方案,我认为您需要一个插件。虽然我还没有尝试过,但 argwrap plugin 提供了这个。
是否有可以更改的 Vim 命令(我猜是搜索和替换?):
listThing(["fish", "monkey", "cat", "penguin"])
进入:
listThing([
"fish",
"monkey",
"cat",
"penguin"
])
不仅仅是在逗号后添加换行符和制表符,因为首行和末行也需要分开。
不知道您的文件中还有什么可以匹配的简单方法是:
:1,$s/\("[^ ,]*"\|\])\)/\r /g
哪个会让你:
listThing([
"fish",
"monkey",
"cat",
"penguin"
])
编辑: 如上所述,但我会再次强调:这对您的效果如何可能取决于您文件中的其他类似构造。其他选项是使用 Ingo 建议的插件,或者在 awk
、perl
或 <insert-favorite-script-language-here>
.
对于特定情况,@lurker 的回答提出的 :substitute
命令就足够了。不幸的是,对于许多编程语言,可能存在结构嵌套,并且很难正确处理所有这些。因此,对于稳健的 "don't make me think" 解决方案,我认为您需要一个插件。虽然我还没有尝试过,但 argwrap plugin 提供了这个。