2nd question:
At first u must know the Separator( e.g. : ) of the columns.
then u can try:
##############################################
:1,$s/^\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\([^:]*:\)\( :\)/\1\2\6\3\4\5/
##############################################
I think man can resolve problems about column-manipulation with regex in vim just like sed.
u shouldn't do all things in vi
u should take a look at the term "Unix and the Tools Philosophy" first
then come back
and man following commands(tools)
grep
cut
paste
and so on