😈
VScodeでPythonのblackを使用する際にシングルクォートを勝手にダブルクォートに置換しないようにする方法
Python 書いてる方の中には black を使用している方も多いと思います。私は VScode でファイルの保存時の自動整形を有効にしているのですが、自動整形時に black のルールでシングルクォートが勝手にダブルクォートに置換されてしまいます。シングルクォート派にはこれが少し厄介で、これだと次回ファイルを編集する時に次の保存のタイミングまでダブルクォートとシングルクォートが混在するソースコードになってしまい何だか気持ち悪いので、勝手に置換されないよう設定しようという話です。
設定手順
-
F1
を押してコマンドパレットを表示 - 検索欄に
>Preferences:Open Settings (JSON)
と入力 - settings.json に以下を追加して保存
"python.formatting.blackArgs": ["skip-string-normalization"]
文字列はダブルクォートって気持ちはわかるんですけどね。入力が楽なので。ただ、郷に入っては郷に従います。
Discussion
本記事をきっかけとして black によりシングルクォートを変換しない方法を知ることができ助かったのですが、
skip-numeric-underscore-normalization
ではなく、skip-string-normalization
ではないでしょうか?ドキュメントにて下記のように記載されております。
引用元: The Black code style - Black 22.3.0 documentation
私の環境(Python 3.10.4, black 22.3.0)では
skip-numeric-underscore-normalization
でもダブルクォートへの変換が行われなかったので少し調べてみたのですが、Add --single-quote option #594によると、ダブルクォートへの変換が行われないような仕様になっているオプションとして、line-length
,skip-string-normalization
,skip-numeric-underscore-normalization
が存在しているようで、それぞれのオプションを指定することでダブルクォートへの変換が行われないことも確認できました。ただ、本記事の「シングルクォートを変換しない」ということを目的に考えると、引用していただいた内容から
skip-string-normalization
を指定するのが妥当だと思いますので、提案いただきました内容で記事の修正をさせていただきました。情報提供ありがとうございました。