vimでファイル全体をソートする方法

提供: neovim/vim入門
2017年9月9日 (土) 23:29時点におけるDaemon (トーク | 投稿記録)による版

(差分) ←前の版 | 最新版 (差分) | 次の版→ (差分)
移動: 案内検索
スポンサーリンク

vimなら編集中のファイル内(バッファ全体)を簡単にソートできます。

読み方

sort
そーと

概要

ファイルの編集中に以下の悩みを持つことはありませんか?

  • ファイルの行をソートしたい
  • 編集中のファイルの重複を省きたい

vim を終了し、sort コマンドを利用して、ソートしてから、もう一度 vim でファイルを開く、といった面倒な方法もありますが、もっとスマートな方法があります。

外部コマンドを利用したソート

ファイル内をソートする方法

現在のファイル(バッファ)全体に対して、sort コマンドを実行する方法は以下の通りです。

:%!sort
  •  % (パーセント) は、現在のバッファを意味します。
  • ! (エクスクラネーションマーク)は、システムのコマンドを実行することを意味します。

さらに、ユニーク処理したいのであれば、 -u オプションを利用します。

:%!sort -u

内部コマンドを利用したソート

ファイル内をソートする

バッファ全体を昇順でソートする場合は、以下の通りです。

:sort

バッファ全体を降順でソートする場合は、以下の通りです。

:sort

大文字小文字の区別なしでソートする

a
A
b
B

:sort でソートすると

A
B
a
b

になります。

大文字小文字を区別なしにソートするには

:sort i

を利用します。結果は、以下の通りになります。

A
a
B
b

8進数、10進数、16進数のソート

それぞれ、以下のオプションを利用してソートできます。

:sort o
:sort n
:sort x

カンマで区切られた第2フィールドでソートする例

以下のデータがあったとき、セパレータを , (カンマ) とします。

foo,10,aaa
bar,8,aaa
hoge,20,aaa

ここでは整数の第2フィールドを10進数として、ソートしたい場合は、

:sort /[^,]*,/n

となります。 結果は以下の通りです。

bar,8,aaa
foo,10,aaa
hoge,20,aaa

n オプションをつけないと、10,20,8 という順番で並ぶことになります。

まとめ

  •  :%!sort や :sort で開いているファイル全体を簡単にソートできる
  •  :%!sort -u で開いているファイル全体をユニークにソートできる

関連項目




スポンサーリンク