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