我有几行,每行都是冒号分隔的值,
abc:def:3
现在我可以使用 printf 加 IFS 变量进行重新格式化,
while read line; do IFS=":" printf "%-20s %-16s %5d\n" ${line[0]} ${line[1]} ${line[2]}; done < XX
但是可以在 VIM 中实现吗?
答案1
好吧,本质上vi
,您可以调用一个命令来执行此操作,如下所示:
:%!column -ts:
(如果您有column
并且它支持该-s
选项)。
否则你可以这样做:
:%s/[^:]\+/ &/g
:%s/\v^ *([^:]{20}): *([^:]{16}): *([^:]{5})/\1:\2:\3/