行の塊をソートする。manga-osort プラグイン。

この記事は Vim Advent Calendar 2012 の 296 (にくろう)日目の記事です。

zshvim の設定を書く時、単に設定を羅列するだけでは、後でなにを書いたのわからなくなる!
ということで、コメント付きで書くことも多いと思います。
で、コメントを書くのはいいけど、設定が多くなってくると、何がどこに書いてあるかわかりづらい!
そこで、御ソートしたいと考えるのですが、コメントがあるとめんどい!死ぬ! manga-osort !!
というわけです。

実例

.zshrc の setopt のあたりを、オプション名でソートする。

これ(特に意味のない順番で書かれてますね)を、

# 色を使う(エスケープシーケンスを通す)
setopt prompt_subst

# auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示
setopt list_types

# 複数の zsh を同時に使う時など history ファイルに上書きせず追加する
setopt append_history

選択して…、ほいさ!

:'<,'>OSort key=1 ^#

できた!

# 複数の zsh を同時に使う時など history ファイルに上書きせず追加する
setopt append_history

# auto_list の補完候補一覧で、ls -F のようにファイルの種別をマーク表示
setopt list_types

# 色を使う(エスケープシーケンスを通す)
setopt prompt_subst

入手先

https://github.com/anekos/manga-osort

NeoBundle つかってれば、

NeoBundle 'anekos/manga-osort'

だけ!便利!

使い方

コマンドは今のところ一つだけです。

:[range]OSort [key={key}] [ignorecase={ignorecase}] {pattern}

patten は正規表現で、これにマッチする行を基準に行の塊を決めます。
(pattern の行から、次の pattern の行までを一つの塊になります)

key を指定すると、pattern の基準行から key 番目の行をキーとしてソートします。
ignorecase は 1 を指定すると、キーのソート時に、大文字小文字を無視します。

range は、指定しなければバッファ全体が対象になります。
v キーで Visual モードに入って選択し、:OSort .. を打つのが良いと思います。

設定

pattern やオプションのデフォルト値を設定できます。
コマンドのオプションと同じキーで辞書作ればいいです。

let g:manga_osort_default_options = {
      \ 'key': '1',
      \ 'pattern': '^"'
      \ }

ふぉそく

デフォルト以外でよく使うパターンは、altercmd などを使うといいです。
コマンドラインで長いコマンドを打ち込む - Humanity

ぷり

こういうオプション増やせや!とかいう場合は、ギッハブとか Twitter @anekos で言ってください。
実例があるといいです。
あと、コマンドのオプションの指定とかもっと良い感じのがあったら、おせーてください。
Pull Request ください。
ねこ。