我想在
中的一行中转换以下文字[12.2,3.3 ,8.1 ,9., 12.4]
到
5
12.2
3.3
8.1
9.
12.4
或来自
[def, abc , ghi ]
到
3
def
abc
ghi
所以,基本上,删除[
和]
,打破基于,
的元素并删除前导或尾随空格,然后将元素数量作为第一行({{在第一个示例中为1}},在第二个示例中为5
,以及以下行中的每个元素。
如何编写命令在vim中快速执行此操作?
答案 0 :(得分:4)
<强>步骤强>
1.列表中的空格:
:s/ //g
2.在开头添加元素数量:
:s/\v\[(([^,]+)*[^\]]+)\]/\=len(split(submatch(1), ',')).','.submatch(1)/
3.用,
替换\r
:
:s/,/\r/g
<强>结果
第一步后:
[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
答案 1 :(得分:0)
如果您对python(在您的操作系统中安装并在vim中激活)没问题,您可以:
将文字编辑为:
a=[your list];print(len(a));
for x in a:print(x)
进入视觉模式并选择所有文字
只需输入:!python
即可将您的列表转换为所需的形状,替换原来的
<强> P上。 S。:需要引用字符串才能使其正常工作