【VSCode】formatOnSaveをOFFにしているのに、保存時に自動整形する問題の解消法

結論

Cmd + S に割り当てられているキーバインディングを変える。

この最終的な手法だけ知りたい方は、下記の試したこと3の項目をお読みください。



経緯

Visual Studio Codeを使っているのですが、ソースを保存する時に、自動でリンターが走って、コードが整形されてしまうところで悩んでいました。


試したこと1 formatOnSaveをOFFにする (NG)

Macならcommand + ',(カンマ)'で環境設定を開いて、検索ボックスにformatと入力。

VSCodeのformatOnSaveの設定画面

検索ボックス下の、左側にあるUserWorkspaceでそれぞれ、EditorのFormat On Saveのボックスにチェックが入っていないか確認します。

もしここにチェックが入っていると、自動整形されるようになっています。外しましょう。

私の場合、ここにいずれもチェックが入っていなかったので、???となってしまいました。

調べたところ、同じような現象で悩んでいる人がいたようで、そこに書いてあった手順が次の方法です。



試したこと2 Cmd + Shift + Pで保存(OK、でも面倒臭いので不採用)

Macの場合は、Cmd + Shift + Pで、Save without formatting(整形なしで保存)できます。

ので、保存の際、毎回このコマンドを使うようにしたら、自動整形しなくなりました。



試したこと3 Cmd + S に割り当てられているキーバインディングを変える(OK、本採用)

とはいえ、毎回Cmd + Shift + Pで保存しようとしても、気を抜くと、つい手癖でCmd + Sで保存してしまうので、イライラしてしまいました。

ということで、キーバインディングを変えて、Cmd + SでSave without formattingできるようにしちゃいました。


MacならCmdを押しながらKSと入力すると、キーバインディングの設定画面が開きます(上部メニューCode > Preferences > Keyboard Shortcutsでも同じ画面が開く)。

VSCodeのキーバインド設定画面


上部の検索ボックスで、save formatと入れると、Save without formattingという名前がリストに出てくるはずです。ここにCmd + Sを割り当てていきましょう。

これをダブルクリックして、Cmd + Sをキーボードで入力します。
すると、"1 existing command has this keybinding"というメッセージが出てきますが、一旦無視してEnterキーを押して確定させましょう。


今度は検索ボックスでsaveと入れると、File: Saveという名前がリストに出てくるはずです。これが通常Cmd + Sで設定されている保存ボタンです。
これのキーバインディングを変えます。

なんでもいいのですが、私はここにCmd + Shift + pを割り当てておきました。手順は上記と同じです。


これでOKです!

無事Cmd + Sで、自動整形なしの保存が効くようになりました。



参考

VSCode - Disable ALL Auto Formatting on Save