Django で共同作業していて、モジュールのインポート順を標準ライブラリ、サードパーティ、オレオレモジュールで分けてアルファベット順で!と言われたときに、golang の gofmt みたいに勝手にやってくれるものがないかと探してみたらありました。
https://github.com/timothycrosley/isort
導入は非常に簡単で、
$ pip install isort
でインストール後、
$ isort spam.py
で、並び替えて上書きしてくれます。
コミットする前にやりましょう。
設定ファイル ~/.isort.cfg というのを作成すると挙動を変えることができます。
isort.cfg
[settings]line_length=120 multi_line_output=3
1 行 120 文字までを許容するようにするのと、インポートが複数行になったときの改行方法を設定してあります。この場合だと 120 文字越えると、以下のように改行されるようになります。
fromthird_partyimport(lib1,lib2,lib3,lib4,)
シェルじゃなくて Vim 上でやりたくなったらこちら
https://github.com/fisadev/vim-isort
NeoBundle 等を使っていれば、 vimrc に書くだけです。
vimrc
NeoBundle 'fisadev/vim-isort'
これでコマンドモードで :Isort
もしくは、ビジュアルモードで並び替えたい行を選択して <C-i>
で並び替えてくれます。