LoginSignup
24
24

More than 5 years have passed since last update.

Pythonのスタイルを自動で整形させるVimプラグイン

Last updated at Posted at 2014-01-20

flake8-vim

ソースコードの見た目は綺麗にしたい派、とりあえずPython書くならpep8は守っておこうぜ派です。

コーディングスタイルの統一が出来ていなかった時代のソースコードを弄るとき、あるいは書き途中のソースコードでpep8に怒られたとき、手動でそれらを整形していくのは面倒です。
面倒だと誰も守らなくなるので、IDE使うかエディタにこだわるなら自動整形プラグインを入れましょう。

なお新しいプロジェクトとかであれば保存するたびに強制的にautopep8という手段もありますが、したくないとかしたら困る場合もあるわけですね。

そこんところをよしなにやっつけてくれる、autopep8というモジュールが存在します。
ただし、このようなモジュールのままでは使うのが面倒なので、エディタ越しに使えるようVimのプラグインを使いましょう。
andviro/flake8-vimには、flake8と一緒にautopep8用の関数も提供されています。

flake8-vimをインストールした状態で、編集したい行を選択して:'<,'>PyFlakeAutoを実行してみましょう。

# ビフォー

def main():
    d={
            'a':111,
        'b':'cc', 
    'c': 12
    }
    if 0: print 1
    foo = 'aa'+'bb'
    return aa
# アフター

def main():
    d = {
        'a': 111,
        'b': 'cc',
        'c': 12
    }
    if 0:
        print 1
    foo = 'aa'+'bb'
    return aa

というような感じです。地味に末尾スペースも削除してくれています。
下の E226 missing whitespace around arithmetic operator [pep8] が解消されない事に今気がついたのですが、これはもしかしたらautopep8かどっかのバグかもしんないですね。後で適当になんかしましょう。

operatorの導入

怠惰系男子が多いvimmerにとって、vでわざわざ範囲選択をしてコマンドを実行するというような冗長な操作は堪え難い苦行といえます。
というわけでoperatorと有用そうなtextobjも入れておきます。

あとは適当に

map ,p <Plug>(operator-autopep8)

のような設定を入れておけば、先ほどの操作は,pafという簡潔なキーバインドで解決するわけですね。しかも関数本体が何行あっても同じ操作でいけちゃいます。
他にも、辞書リテラルのインデント崩れを直したり(,pa{})と、入れてみると結構便利です。

我々はこういうエコを通じてラッコやイルカに配慮する必要があります。

24
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
24
24