vim如何以这种方式转换文本

vim如何以这种方式转换文本,vim,Vim,我想将以下文本转换为一行,从 [12.2,3.3 ,8.1 ,9., 12.4] 到 或来自 [def, abc , ghi ] 进入 因此,从本质上讲,删除[和],基于分隔元素,删除前导或尾随空格,然后将元素数作为第一行,第一个示例中为5,第二个示例中为3,接下来的行中为每个元素 如何在vim中编写快速执行此操作的命令?步骤 1.列表中的条形空间: :s/ //g 2.将元素数添加到开始: :s/\v\[(([^,]+)*[^\]]+)\]/\=len(split(submatch(1

我想将以下文本转换为一行,从

[12.2,3.3 ,8.1 ,9., 12.4]

或来自

[def,  abc , ghi ]
进入

因此,从本质上讲,删除[和],基于分隔元素,删除前导或尾随空格,然后将元素数作为第一行,第一个示例中为5,第二个示例中为3,接下来的行中为每个元素

如何在vim中编写快速执行此操作的命令?

步骤

1.列表中的条形空间:

:s/ //g
2.将元素数添加到开始:

:s/\v\[(([^,]+)*[^\]]+)\]/\=len(split(submatch(1), ',')).','.submatch(1)/
3.替换为\r\n:

结果

第一步之后:

[12.2,3.3,8.1,9.,12.4]
第二步之后:

5,12.2,3.3,8.1,9.,12.4
在最后一步之后:

5
12.2
3.3
8.1
9.
12.4

如果您可以在操作系统中安装python并在vim中激活,您可以:

将文本编辑为: a=[你的名单];普林特丽娜; 对于a中的x:printx

进入视觉模式并选择所有文本

只需键入:!python和它应该将列表转换为所需的形状,替换原来的形状


附言:需要引用字符串才能使其工作

您尝试了什么?
[12.2,3.3,8.1,9.,12.4]
5,12.2,3.3,8.1,9.,12.4
5
12.2
3.3
8.1
9.
12.4