VSCodeをフォルダごとにカスタマイズする



## 結論

以下のファイルを`.vscode`フォルダ内におくだけで、フォルダごとに異なるVSCodeの設定を変更できます。

僕が新規プロジェクトやコードを試したいときに使っているテンプートです。

```jsonc:.vscode/settings.json
{
  "workbench.colorCustomizations": {
    "activityBar.foreground": "#fff", // 選択したアイコンの色
    "activityBar.background": "#127CC9", // アクティビティバーの背景色
    "activityBar.inactiveForeground": "#333" // 選択されていないアイコンの色
  },
  "workbench.editor.tabSizing": "shrink", // タブのサイズをファイル名に合わせる
  "workbench.tree.renderIndentGuides": "always", // ファイルツリーにインデントガイドを表示
  "workbench.tree.indent": 16, // ファイルツリーのインデントの幅
  "terminal.integrated.copyOnSelection": true, // 選択した文字列をコピー
  "editor.tabSize": 4, //タブのサイズを変更
  "editor.guides.bracketPairs": true, // 対応する括弧を強調表示
  "[python]": {
    "editor.defaultFormatter": "ms-python.black-formatter", // blackをデフォルトフォーマッタに設定
    // "editor.defaultFormatter": "ms-python.flake8",  // flake8をデフォルトフォーマッタに設定
    "editor.formatOnSave": true // 保存時に自動フォーマット
  },
  "editor.codeActionsOnSave": {
    "source.organizeImports": "explicit" // 保存時にimportを自動整理
  },
  // "editor.defaultFormatter": "esbenp.prettier-vscode", // prettierをデフォルトフォーマッタに設定
  "flake8.args": ["--max-line-length=120", "--ignore=E203,E402,W503"],  // flake8の設定
  "black-formatter.args": ["--line-length=120"],  // blackの設定
  "isort.path": [
    "/home/username/anaconda3/bin/isort" // which isortで取得したPathを記入したら、isortが使えるようになる
  ],
  "files.insertFinalNewline": true, // 最後の行を保存時に自動改行
  "files.trimTrailingWhitespace": true // 末尾のスペースを保存時に自動削除
}

```

`extensions.json`は拡張機能の推薦をしてくれるだけなので、`.vscode`フォルダ内に置かなくてもかまいません。
（コメントアウトしている拡張機能も僕が普段使っているもので、おすすめです）

```jsonc:.vscode/extensions.json
{
    "recommendations": [
        "ms-python.python",  // Python
        "donjayamanne.python-environment-manager",  // Pythonの仮想環境を管理
        "mgesbert.python-path",  // Pythonのパスを設定
        "ms-python.black-formatter",  // black formatter
        "ms-python.flake8",  // flake8 formatter
        "kevinrose.vsc-python-indent",  // Pythonのインデントを調整
        "nhoizey.gremlins",  // エラーになりやすい文字を表示
        "oderwat.indent-rainbow",  // インデントを虹色に表示
        "ms-python.isort",  // isort
        "mosapride.zenkaku",  // 全角スペースを表示
        // "github.copilot",  // GitHub Copilot
        // "eamodio.gitlens",  // GitLensを使うための
        // "shd101wyy.markdown-preview-enhanced",  // Markdownのプレビューを強化
        // "mechatroner.rainbow-csv",  // CSVの列を色分け
        // "gruntfuggly.todo-tree",  // TODOコメントを表示
        // "redhat.vscode-yaml",  // YAMLを編集
        // "njqdev.vscode-python-typehint",  // Pythonの型ヒントを表示
        // "mkxml.vscode-filesize",  // ファイルサイズを表示
        // "streetsidesoftware.code-spell-checker",  // スペルチェックを行う
        // "formulahendry.auto-rename-tag", // HTML/XMLのタグを自動でリネーム
        // "softwaredotcom.swdc-vscode",  // Softwareの利用状況を表示
        // "usernamehw.errorlens", // エラーを強調表示
        // "emilast.logfilehighlighter",  // ログファイルをハイライト
        // "pkief.material-icon-theme",  // アイコンを変更
        // "ibm.output-colorizer",  // 出力結果をカラー表示
        // "ms-vscode-remote.remote-ssh",  // SSHでリモート接続
        // "tomoki1207.pdf",  // PDFを表示
        // "christian-kohler.path-intellisense",  // パスを補完
        // "shardulm94.trailing-spaces",  // 末尾のスペースを赤く表示
    ]
}

```

## 備考
主にPythonプロジェクト向けになります。


とりあえず使ってみて、

「エディターの色をプロジェクトごとに変えたい」

「改行する文字数120だと見切れるから80にしよう」

「Formatter（勝手に整形してくれるやつ）はflake8がいい」

と思ったらその都度変更することができます。
あとFormatterなどは拡張機能を入れることで機能します。