「vimでファイル全体をソートする方法」の版間の差分

提供: neovim/vim入門
移動: 案内検索
(ページの作成:「vimなら編集中のファイル内(バッファ全体)を簡単にソートできます。 '''読み方''' ;sort:そーと __TOC__ == 概要 == ファイルの編...」)
 
 
行11: 行11:
  
 
vim を終了し、sort コマンドを利用して、ソートしてから、もう一度 vim でファイルを開く、といった面倒な方法もありますが、もっとスマートな方法があります。
 
vim を終了し、sort コマンドを利用して、ソートしてから、もう一度 vim でファイルを開く、といった面倒な方法もありますが、もっとスマートな方法があります。
== ファイル内をソートする方法 ==
+
== 外部コマンドを利用したソート ==
 +
=== ファイル内をソートする方法 ===
 
現在のファイル(バッファ)全体に対して、sort コマンドを実行する方法は以下の通りです。
 
現在のファイル(バッファ)全体に対して、sort コマンドを実行する方法は以下の通りです。
 
<syntaxhighlight lang="vim">
 
<syntaxhighlight lang="vim">
行23: 行24:
 
:%!sort -u
 
:%!sort -u
 
</syntaxhighlight>
 
</syntaxhighlight>
 +
== 内部コマンドを利用したソート ==
 +
=== ファイル内をソートする ===
 +
バッファ全体を'''昇順'''でソートする場合は、以下の通りです。
 +
<syntaxhighlight lang="vim">
 +
:sort
 +
</syntaxhighlight>
 +
 +
バッファ全体を'''降順'''でソートする場合は、以下の通りです。
 +
<syntaxhighlight lang="vim">
 +
:sort
 +
</syntaxhighlight>
 +
=== 大文字小文字の区別なしでソートする ===
 +
<syntaxhighlight lang="vim">
 +
a
 +
A
 +
b
 +
B
 +
</syntaxhighlight>
 +
を ''':sort''' でソートすると
 +
<syntaxhighlight lang="vim">
 +
A
 +
B
 +
a
 +
b
 +
</syntaxhighlight>
 +
になります。
 +
 +
大文字小文字を区別なしにソートするには
 +
<syntaxhighlight lang="vim">
 +
:sort i
 +
</syntaxhighlight>
 +
を利用します。結果は、以下の通りになります。
 +
<syntaxhighlight lang="vim">
 +
A
 +
a
 +
B
 +
b
 +
</syntaxhighlight>
 +
=== 8進数、10進数、16進数のソート ===
 +
それぞれ、以下のオプションを利用してソートできます。
 +
<syntaxhighlight lang="vim">
 +
:sort o
 +
:sort n
 +
:sort x
 +
</syntaxhighlight>
 +
=== カンマで区切られた第2フィールドでソートする例 ===
 +
以下のデータがあったとき、セパレータを , (カンマ) とします。
 +
<syntaxhighlight lang="vim">
 +
foo,10,aaa
 +
bar,8,aaa
 +
hoge,20,aaa
 +
</syntaxhighlight>
 +
ここでは整数の第2フィールドを10進数として、ソートしたい場合は、
 +
<syntaxhighlight lang="vim">
 +
:sort /[^,]*,/n
 +
</syntaxhighlight>
 +
となります。
 +
結果は以下の通りです。
 +
<syntaxhighlight lang="vim">
 +
bar,8,aaa
 +
foo,10,aaa
 +
hoge,20,aaa
 +
</syntaxhighlight>
 +
 +
n オプションをつけないと、10,20,8 という順番で並ぶことになります。
 
== まとめ ==
 
== まとめ ==
* %!sort で開いているファイル全体を簡単にソートできる
+
* :%!sort や :sort で開いているファイル全体を簡単にソートできる
* %!sort -u で開いているファイル全体をユニークにソートできる
+
* :%!sort -u で開いているファイル全体をユニークにソートできる
 
== 関連項目 ==
 
== 関連項目 ==
 
* [[メインページ]]
 
* [[メインページ]]
 
<!-- vim: filetype=mediawiki
 
<!-- vim: filetype=mediawiki
 
-->
 
-->

2017年9月9日 (土) 23:29時点における最新版

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 で開いているファイル全体をユニークにソートできる

関連項目