🐷

[VSCode]改行すると勝手にスペース、絶対殺すマン

に公開


改行すると、勝手にスペースが!

普段あまり VSCode を使わず、なんとなく使っているので、どういう理屈でこうなるのかわからない事が多い。
オススメされてた設定や、拡張機能がなんか悪さしてるんだろうなぁと思うものの、一体どれのせいかわからず途方に暮れることも多いはず。少なくとも、私はそう。

今回は、画像のように勝手にスペース入っちゃう機能が「誰のせいか」を発見するまでのプロセスを見ていきましょう。

Format on ~ が悪い

設定 > Format on で検索してくると出てくる連中が悪さしてるから、オフにしよう。
ググるとそういう情報に溢れているので、確認してみました。

Format on Type にチェック入ってたので、オフに。
結果 ➡ 改善されず。

拡張機能が悪い

拡張機能は言われるままにいろいろ突っ込んでるので、どれがなにをしているか今となってはサッパリ。
そこで、一旦本当に拡張機能のせいか、すべての拡張機能をオフにして確認します。

code --disable-extensions

実行すると、一時的に拡張機能を全てオフにした状態で VSCode が起動します。
結果 ➡ 勝手にスペース入らなくなった!!

ここからが本当の地獄だ

いつのまにか 36 個も入っていた拡張機能を1つずつオフ > VSCode 再起動 > 確認。
この作業を無心で繰り返します。

なお、(私の場合)機能をオフにするだけだとプラグインの行儀が悪いせいか、確認できませんでした。
オフにするたび、VSCode を再起動することをオススメします。

❗ 一般的に問題とされる拡張機能

  • Prettier
  • ESLint
  • auto-formatter 系(例えば Beautify, Format Files, EditorConfig for VS Code)
  • 言語特有の拡張機能(例: Python, Lua, TypeScript など)

ChatGPT 先生に聞いたところ、これらを優先してオフにしておくといいそうです。
なお、私の場合はと言うと……、

コイツのせいだ!!!

C# のコードを書いていると、VSCode がしきりにオススメしてくるから、根負けして入れたコイツ。
オススメされるから入れただけで、本来必要はないのでオーフ!
必要な場合は、Formatting and Linting の機能だけ、自分でカットするのもいいでしょう。

https://code.visualstudio.com/docs/csharp/formatting-linting

それ以外の問題

ChatGPT 先生に「考えられず限りの理由を教えて」といったところ、次のような理由も勝手にスペースが入る要因になるようです。

言語ごとのフォーマッタ設定

"[javascript]": {
    "editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[plaintext]": {
    "editor.defaultFormatter": null
}

→ 特定の言語用にフォーマッタが指定されていれば、それが影響している可能性があります。

スニペット(snippet)による自動補完

ユーザー定義や拡張機能によるスニペットで、改行時にカンマの後にスペースを入れるようになっていることがあります。

✅ 確認方法:
Manage > Snippets から関連する言語のスニペットを開く

"insertText" や "body" に , が含まれていないか確認

入力補完(インテリセンス)

自動補完候補を選択した際に、, が自動で補完されることもあります。特にカンマ区切りの引数リストなど。

✅ 確認方法:
editor.acceptSuggestionOnEnter を "on" → "off" にしてみる

キーバインドまたはマクロ系拡張機能

  • multi-command
  • macros
  • keyboard macro

改行キー (Enter) に複数処理が割り当てられていて、スペースが入っている可能性。

✅ 確認方法:
Ctrl+K Ctrl+S(キーバインド)で Enter キーに割り当てられたコマンドを確認

Git Hookや他の外部フォーマッタ(保存時)

保存時やコミット時に整形されている可能性もあります。

  • .git/hooks/pre-commit
  • .husky/pre-commit

lint-staged 経由で prettier 実行

おわりに

フォーマッターやリンターは非常に便利なので、とりあえず入れとくかーになりがちですが、予想外のフォーマッティングを行うこともよくあります。

「VSCode の事なら~君に聞けばいいよ!」みたいな VSCode 仙人を軸に、統一環境を用意するのが理想ですが、現実はなかなかそうもいきません。
秀丸以外勝たん、とそれ以外絶対使ってくれない技術者も 2025 年現在、存在します……。いいエディタだとは思います。思います、が!)

VSCode は便利ですが、なにかあった時にちょくちょく「向き合う」ことも必要です。
面倒がらずに向き合っていくほど、解決までの時間も短くなっていくと思うので、頑張っていきましょう!

Discussion