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