【VS Code】拡張機能でpythonのフォーマッターであるBlack Formatterを使用してフォーマットする

概要

最近blackというものが流行っておりVS Codeでも使用できるようになったので利用する。

変更点

2023/11/03 VSCodeで勝手に改行される場合や改行されたくない場合に対しての設定も追記

拡張機能をインストール

現時点ではPreview版ですがmicrosoftから拡張機能Black Formatterが出ているのでそちらを使用します。

BlackFormatterの拡張機能

VS Codeの環境設定 フォーマッター指定

インストールしたら、pythonファイルの場合はこちらのフォーマッターを使用するように設定して、ファイルを保存したらフォーマットが実行できるように設定

設定の検索に

@lang:python editor.defaultFormatter

を入力して、インストールしたBlack Formatterにする

設定を行う

VS Codeの環境設定 ファイル保存時にフォーマットを行う

設定画面から

editor.formatOnSave

と検索してチェックをつける

VS Codeでの改行する長さを変更

Black公式に書いてある–line-lengthを使用

VS Code上での設定

設定画面の拡張機能のArgsに

--line-length=120

のように設定する。

この場合は120文字まで改行しないという設定。(デフォルトは79か80)

settings.json(ワークスペースかユーザーどちらの設定にするかでのファイル場所は異なる)には

{
    "[python]": {
        "editor.defaultFormatter": "ms-python.black-formatter",
        "editor.formatOnSave": true,
    },
    // 以下が追記される
    "black-formatter.args": [
        "--line-length=120"
    ]
}

なので直接settings.jsonに記載しても問題ない。

また

    "black-formatter.args": [
        "--line-length","120"
    ]

みたいに分けてもいいらしい。

これでも改行されてしまう場合

djangoの開発をしていてurlpatternsに設定する場合に1行で書きたかったのになぜか120文字に増やしても改行される場合がある。

下記が理想

しかも

path("question/<int:exam_id>/<int:question_id>/", QuestionUnit01View.as_view(), name="question"),

の方が長いのに改行されていない。

この違いは関数の引数の最後に「,」があるかどうか

path("logout/",LogoutView.as_view(next_page="login"),name="logout",←ここ)

これを消すと改行がされずにうまく整形してくれる。

おわりに

コーディング規約みたいなものはあるがこのように単純に並べているものは改行されるとよけいに見にくくなる気がするので個人開発の場合は自分の見やすいようにできればと

引数の最後の「,」で改行されることに気が付くのに以外に時間がかかったが癖でつけることもあるようなので設定でどうにかしたい・・・

コメント