ファイル内のデータをソートするショートカットをvimrcに設定
以前に小ネタ的に書いたこれ、我ながらなかなか役に立っています。
calendar.vimを出すショートカットをvimrcに設定 - the code to rock
記事にしてから1週間ちょっとですが、けっこう何度も使ってます。
しかし、というかそれ以上に、似たような感じで設定&有効だったのが掲題の件で、具体的には以下のようなのをvimrcに設定しています。
nnoremap <Space>s :sort<CR>
気づいたのはこの頃ですが、
知らんかった便利 / 他2コメント http://t.co/YdtT8178fn “VIMで選択行をソートする #Vim - Qiita” http://t.co/IflMuqUCgq
— Hiroaki Kadomatsu (@note103) 2014, 6月 16
Qiitaさんとそこへ投稿されてる皆さん、本当にありがとうございます・・
VIMで選択行をソートする - Qiita
ようは、複数行の同タイプの文章をソートしたいとき、たとえば以下のようなログとか・・
2014/06/23 12:56 foo 2012/05/27 11:02 bar 2013/10/19 17:10 baz 2015/03/22 09:20 qux 2014/06/03 13:40 quux
これを日付の古い順にしたい、という場合、今までだとこういうときは、一旦新規のExcelを開いて、そこにペーストして、コマンド+シフト+rで「並べ替え」機能のウィンドウを出して(ショートカット使わない場合は最上部のメニューから「ツール>並べ替え」だと思う)、そこでなんかやってました。
が、上記のリンク先(Qiita)にあるとおり、コマンドラインモードで「:sort」を打ち込むと、
2012/05/27 11:02 bar 2013/10/19 17:10 baz 2014/06/03 13:40 quux 2014/06/23 12:56 foo 2015/03/22 09:20 qux
てな感じに一瞬でなります。
しかも、これ別に行頭だけでソートしてるわけじゃなくて、たとえばこういうデータなら
2014/06/03 13:40 quux 2014/06/03 13:40 foobar
こんな風に
2014/06/03 13:40 foobar 2014/06/03 13:40 quux
異なる部分で判断してソートしてくれますので、そこも大変ありがたいです。(普通?普通ですかね?)
ただしちなみに、上記ではわざわざ、1ケタの数字も「06」とかにしているので問題ないですが、こんな感じのデータだと・・(実験用に年数はすべて揃えています)
2014/6/23 12:56 foo 2014/05/27 11:02 bar 2014/10/19 17:10 baz 2014/3/22 09:20 qux 2014/06/03 13:40 quux
こんな風に
2014/05/27 11:02 bar 2014/06/03 13:40 quux 2014/10/19 17:10 baz 2014/3/22 09:20 qux 2014/6/23 12:56 foo
ある意味期待通りですが、「10月」の方が「3月」とか「6月」より上になります。数値としてではなく文字として判断してる、てことでしょうかね? それともたんに行頭から順に読んでるだけか?
ま、ともあれ、このコマンドを利用して、vimrcに冒頭のようなことを書いておきますと、「あ〜、これソートしたいな〜」という時に(他の人にどれだけそんな機会があるのかは知りませんが)、そのファイル上で「Space」と「s」を順番にパパッと押したらチャチャッとソートされます。これはかなり気持ちいい&速くてよいです。
まあもちろん、「:sort」なんて大したあれでもないので、そのつど打ち込んでもいいんですが、僕はけっこうこれやるので、だいぶ違いがありますね。
なんと言っても、これでもう「ソートしたいたびにExcelを開く」必要がなくなるわけですから・・(どんだけソートしたいのか)
ちなみにというか、逆順でソート(:sort!)とか、重複行を削除とか、正規表現を使うとかも含めて上記のQiita記事では紹介されているのでよろしければどうぞ。
ああ、あとさらにちなみに、そちらの記事では、そもそものタイトルにもあるとおり、「選択した行をソートする」方法としてそれが紹介されているので、もしかしたら、というか普通はそういう使い方の方がよいかもしれないですね。
その場合はシフト+vで複数行を選択して、コマンドラインモードで「:sort」とかすればOKです。
僕の場合はコマンド+コントロール+qとかでいつも下書き用の白紙エディタが出てくるような作業フローがあるので、そこにデータをパッとコピペして「Space, s」やってソートされたのを目的の場所にカット&ペースト、みたいなことが多いです。
Vim マジ便利ですね〜。