果物,りんご
酒,ウオツカ
調味料,塩
:%s/^\([^,]*\),\([^,]*\)/\2,\1/gc
りんご,果物
ウオツカ,酒
塩,調味料
では内容を説明していく。
最初の^は行頭という意味。 ( )で囲むとグループという意味になる。ここでは2つのグループを作っている。 [^,]はカンマ以外の文字という意味 *は直前に指定した文字を0回以上繰り返すという意味。 [^,]*でカンマ以外の文字列という意味になる。
検索条件をまとめると、 行頭 カンマ以外の文字列(グループ1) カンマ カンマ以外の文字列(グループ2) に合致する文字列 という意味になる。
つまり (行頭)酒,ウオツカ という文字列が選択される。
次に置換後の内容を説明する。 置換後の文字列は\2,\1 \1や\2は検索条件の中に()で囲ったグループを表している。 最初に現れたのは\1 次は\2 何個もグループを作ったら\3 \4 というように増えていく。
\2、\1 というのは 2番目のグループ カンマ 1番目のグループ に置換すると言う意味になる。
つまり 酒(グループ1) ウオツカ(グループ2)になるので、ウオツカ,酒と並び替えられるわけ。
列の区切りがSpaceの場合は、下記のコマンドとなる。
:%s/^\([^,]*\)\s\([^,]*\)/\2 \1/g