Introduction
掲題の通り。
わざわざ clang-format をインストールして環境を汚すのも嫌だし、調べたら最近の Microsoft の拡張機能に clang-format がバンドルされている、とのことで何もしなくてラッキー…と思っていたのだが動かなくてかなり悩んだ。
What’s problem?
運悪く、Zenn の記事、VSCodeでモダンなC++開発環境構築(CMakeとclang-format編) を見つけて、そこを見て設定を施したがうんともすんとも言わない。
この記事中では別に Remote-SSH で使えるとは一言も書いてないが、
と書いてあったので、素直に .vscode/settings.json に
1 | { |
を記述した。
が、動かない。
出力 タブ の C/C++ のコンソールを見ると
1 | Formatting failed: |
こんなエラーが出ている。
動くって書いてあったじゃん…
ということで、きちんと拡張機能の設定を見る。
The full path of the clang-format executable. If not specified, and clang-format is available in the environment path, that is used unless the version bundled with the extension is newer. If not found in the environment path, the clang-format bundled with the extension will be used.
要するに、「指定がない場合、環境変数 PATH に clang-format が存在すれば、それが使用されます。ただし、拡張機能に同梱されているバージョンの方が新しい場合は、そちらが優先されます。環境変数 PATH に clang-format が見つからない場合は、拡張機能に同梱されている clang-format が使用されます」、と。
システムにインストールされているバイナリの兼ね合いもあるが、正解は C_Cpp.clang_format_path に "" を指定する、でした。C_Cpp.clang_format_path そのものを削除したら、先のエラーメッセージのように、リモート (SSH で接続先) ではなく、ローカルの clang-format が使われてしまった模様 (下記はローカルの Windows から Ubuntu 22.04 に接続しているときの様子)。
最終的には下記の設定に落ち着いた。
1 | { |
肝心の .clang-format の内容は Clang-Format Style Options を参照。
自分はこのようにした。
1 | BasedOnStyle: Microsoft |
今後細かく調整していきたい。



