VIM 中的打印漂亮吗?

VIM 中的打印漂亮吗?

我有几行,每行都是冒号分隔的值,

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/

相关内容