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