如何在VIM编辑器中交换由':'分隔的多个列? (通缉令是2,3,4,1,(...))
例如。 1:2:3:4:5:6 - > 2:3:4:1:5:6
编辑:我需要一次交换多行。
答案 0 :(得分:2)
这样可行:
:s/\v(.*):(.*):(.*):(.*):(.*):(.*)/\2:\3:\4:\1:\5:\6
答案 1 :(得分:2)
如果您的系统上有awk,我会使用外部awk执行此操作,它看起来比正则表达式更直接:
%!awk -F: -v OFS=":" '{print $2,$3,$4,$1,$5,$6}'
还有一个名为“交换”的插件,它也可以让它变得更容易。
答案 2 :(得分:1)
为了处理超过5个字段,应使用非贪婪重复运算符(.{-}
而不是.*
):
:s/\v(.{-}):(.{-}):(.{-}):(.{-}):/\2:\3:\4:\1:/