Skip to content

include をソートするVimプラグインを作りました

Posted on:2016年1月24日

Haskell で import 文をソートするプラグイン vim-haskell-sort-import を作りました - プログラムモグモグという記事を拝見して,コードを見たらすごくわかりやすくて,これの C/C++ 版がほしいと思い,書いてみました.

vim script はほとんど書いたことがないんですが,やっぱりエディタ拡張用のスクリプトなので,普通の言語と違う部分は多いですね… でもその分エディタという UI が既に用意されている状態なので,なんというか書いていて楽しかったです.さくっと書けますし.(先ほどのコードを参考にしているというのもありますが)

使い方

NeoBundlevim-plug のようなプラグインマネージャを使うなどして runtime path に突っ込んでください. 提供する機能は SortInclude コマンドのみです.

f:id:agtn:20160124191335g:plain

こんな感じの動作をします.

#include"" を使う場合と <> を使う場合があり,それぞれファイルパスの探索場所が異なるので,それぞれ別のグループとしてソートするようにしました.

#include <iostream>
#include "a.h"
#include "z.h"

#include "a.h"
#include <iostream>
#include "z.h"

にソートされたら気持ち悪いと思うので.

あとは参考にさせていただいたプラグインと同様,空行を挟むなどブロック化されている場合は,ブロック内でソートします.

#include をソートするとか既にありふれてそうですが,はじめての vim プラグインということで. せっかくなのでドキュメントなども vim の help フォーマットにしたがって書いてみました.