「VS Codeでコードを書いていて、インデントがぐちゃぐちゃになって見づらい」
「人によってスペースやタブの幅がバラバラ…」
こんな悩みはありませんか?
VS Codeなら、ショートカットや設定で簡単にインデントを自動整形できます。
この記事では、以下の内容について詳しく解説します:
- ショートカットによる手動整形
- 保存時の自動整形設定
- インデント方式(スペース・タブ)の統一
- 言語別の詳細設定
- フォーマッタ(Prettier、ESLint)との連携
- チーム開発での設定統一
- トラブルシューティング
コードを見やすくして、開発効率を大幅にアップさせましょう!
ショートカットによる手動整形
基本的な整形ショートカット
コード全体の整形
Shift + Alt + F (Windows/Linux)
Shift + Option + F (Mac)
効果
- 現在開いているファイル全体を整形
- インデントの修正
- 空白やスペースの統一
- 改行位置の最適化
選択範囲の整形
Ctrl + K, Ctrl + F (Windows/Linux)
Cmd + K, Cmd + F (Mac)
使い方
- 整形したい部分を選択
- ショートカットを実行
- 選択した範囲だけが整形される
その他の便利なショートカット
インデントの調整
Tab - インデントを深くする
Shift + Tab - インデントを浅くする
Ctrl + ] - 選択行のインデントを深くする
Ctrl + [ - 選択行のインデントを浅くする
行の移動と複製
Alt + ↑/↓ - 行を上下に移動
Shift + Alt + ↑/↓ - 行を複製
Ctrl + Shift + K - 行を削除
保存時の自動整形設定
基本的な自動整形
いちいちショートカットを押すのが面倒な場合は、保存するたびに自動でインデントを整える設定にできます。
settings.jsonでの設定
{
"editor.formatOnSave": true
}
効果
Ctrl + S
(Mac:Cmd + S
)でファイル保存時に自動整形- 手動でのフォーマット実行が不要
- 常に統一されたコードスタイル
GUIでの設定方法
Ctrl + ,
(Mac:Cmd + ,
)で設定画面を開く- 検索欄に「format on save」と入力
- 「Editor: Format On Save」にチェックを入れる
より詳細な自動整形設定
高度な自動整形オプション
{
"editor.formatOnSave": true,
"editor.formatOnPaste": true,
"editor.formatOnType": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true,
"source.fixAll": true
}
}
設定の意味
formatOnPaste
– ペースト時に自動整形formatOnType
– 入力中に自動整形organizeImports
– import文の整理fixAll
– 修正可能な問題をすべて修正
インデント方式とサイズの設定
スペースとタブの選択
スペースを使用する設定
{
"editor.insertSpaces": true,
"editor.tabSize": 2,
"editor.detectIndentation": false
}
タブを使用する設定
{
"editor.insertSpaces": false,
"editor.tabSize": 4,
"editor.detectIndentation": false
}
インデント幅のカスタマイズ
よく使われる設定例
2スペース(JavaScript、React、Vueなど)
{
"editor.tabSize": 2,
"editor.insertSpaces": true
}
4スペース(Python、Java、C#など)
{
"editor.tabSize": 4,
"editor.insertSpaces": true
}
タブ文字(Go、Makefileなど)
{
"editor.insertSpaces": false,
"editor.tabSize": 4
}
言語別のインデント設定
詳細な言語別設定
{
// グローバル設定
"editor.tabSize": 4,
"editor.insertSpaces": true,
// 言語別設定
"[javascript]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[typescript]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[python]": {
"editor.tabSize": 4,
"editor.insertSpaces": true
},
"[go]": {
"editor.insertSpaces": false,
"editor.tabSize": 4
},
"[html]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[css]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[json]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[yaml]": {
"editor.tabSize": 2,
"editor.insertSpaces": true
},
"[markdown]": {
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.wordWrap": "on"
}
}
フォーマッタとの連携
Prettier による統一
プロジェクトでJavaScript、TypeScript、HTML、CSSなどを扱う場合は、VS Code拡張「Prettier」が非常に便利です。
Prettierのインストールと設定
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.formatOnSave": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[css]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
.prettierrcファイルでの詳細設定
{
"semi": true,
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 80,
"tabWidth": 2,
"useTabs": false
}
ESLint による統一
JavaScript/TypeScript プロジェクトでの設定
{
"eslint.enable": true,
"editor.codeActionsOnSave": {
"source.fixAll.eslint": true
},
"eslint.workingDirectories": ["./"]
}
.eslintrcでのルール設定
{
"rules": {
"indent": ["error", 2],
"no-tabs": "error",
"quotes": ["error", "single"],
"semi": ["error", "always"]
}
}
言語固有のフォーマッタ
Python(Black + autopep8)
{
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"python.formatting.blackArgs": [
"--line-length=88"
]
}
Go(gofmt)
{
"[go]": {
"editor.formatOnSave": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
}
}
Java(Google Java Format)
{
"[java]": {
"editor.defaultFormatter": "redhat.java",
"editor.formatOnSave": true
},
"java.format.settings.url": "https://raw.githubusercontent.com/google/styleguides/gh-pages/eclipse-java-google-style.xml"
}
インデント変換の実用的な方法
スペースとタブの一括変換
スペースをタブに変換
Ctrl + Shift + P
でコマンドパレットを開く- 「Convert Indentation to Tabs」を選択
- ファイル全体のスペースがタブに変換される
タブをスペースに変換
Ctrl + Shift + P
でコマンドパレットを開く- 「Convert Indentation to Spaces」を選択
- ファイル全体のタブがスペースに変換される
複数ファイルの一括変換
Find and Replace での一括変換
Ctrl + Shift + H
で検索・置換を開く- 「フォルダ内を検索」を選択
- 正規表現を有効にして以下を実行:
4スペースを2スペースに変換
- 検索:
^( ){2,}
- 置換: (2スペース)
タブをスペースに変換
- 検索:
\t
- 置換: (2スペース)
拡張機能による高度な整形
Indent Rainbow
インデントレベルを色分けして、構造を視覚的に確認できます。
{
"indentRainbow.colors": [
"rgba(255,255,64,0.07)",
"rgba(127,255,127,0.07)",
"rgba(255,127,255,0.07)",
"rgba(79,236,236,0.07)"
]
}
Bracket Pair Colorizer
カッコの対応を色分けして、インデント構造を把握しやすくします。
{
"bracket-pair-colorizer-2.colors": [
"#ffd700",
"#da70d6",
"#87ceeb"
]
}
Auto Rename Tag
HTMLやXMLでタグをリネームする際、対応するタグも自動で変更されます。
Trailing Spaces
不要な末尾スペースをハイライト表示・自動削除します。
{
"trailing-spaces.deleteModifiedLinesOnly": true,
"trailing-spaces.includeEmptyLines": false
}
チーム開発での設定統一
.vscode/settings.jsonでの共有
プロジェクトルートに.vscode/settings.json
を作成して、チーム全体で設定を統一できます。
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[python]": {
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.tabSize": 4
},
"[go]": {
"editor.insertSpaces": false
}
}
EditorConfig による統一
.editorconfig
ファイルでエディタ共通の設定を管理:
root = true
[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
[*.{js,ts,jsx,tsx,vue}]
indent_style = space
indent_size = 2
[*.{py}]
indent_style = space
indent_size = 4
[*.go]
indent_style = tab
indent_size = 4
[*.{html,css,scss,json,yml,yaml}]
indent_style = space
indent_size = 2
[Makefile]
indent_style = tab
Git Hooks での品質保証
コミット前に自動でフォーマットチェック:
#!/bin/sh
# .git/hooks/pre-commit
# Prettierでフォーマットチェック
npx prettier --check "src/**/*.{js,ts,jsx,tsx}"
if [ $? -ne 0 ]; then
echo "Code formatting issues found. Run 'npx prettier --write .' to fix."
exit 1
fi
実用的な設定例
Webフロントエンド開発
React + TypeScript プロジェクト
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescriptreact]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"prettier.semi": true,
"prettier.singleQuote": true,
"prettier.trailingComma": "es5",
"eslint.workingDirectories": ["./"]
}
Vue.js プロジェクト
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"[vue]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"vetur.format.defaultFormatter.html": "prettier",
"vetur.format.defaultFormatter.css": "prettier",
"vetur.format.defaultFormatter.js": "prettier"
}
バックエンド開発
Python Django プロジェクト
{
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "ms-python.black-formatter",
"editor.tabSize": 4,
"editor.insertSpaces": true,
"editor.codeActionsOnSave": {
"source.organizeImports": true
}
},
"python.linting.flake8Enabled": true,
"python.linting.flake8Args": [
"--max-line-length=88"
]
}
Node.js プロジェクト
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"eslint.workingDirectories": ["./"],
"eslint.validate": [
"javascript",
"typescript"
]
}
トラブルシューティング
よくある問題と解決方法
フォーマットが効かない
原因1: フォーマッタが設定されていない
{
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
原因2: 拡張機能がインストールされていない
- Prettierをインストールしているか確認
- 拡張機能が有効になっているか確認
原因3: ファイル形式が認識されていない
- 右下の言語モードを確認
- 適切な拡張子が設定されているか確認
インデントが統一されない
detectIndentationを無効にする
{
"editor.detectIndentation": false,
"editor.tabSize": 2,
"editor.insertSpaces": true
}
既存のコードがバラバラ
プロジェクト全体を一括整形
- すべてのファイルを選択
Ctrl + Shift + P
→ 「Format Document」- または Find and Replace で一括変換
特定のファイルだけ整形されない
ファイル別の設定確認
{
"editor.formatOnSave": true,
"[markdown]": {
"editor.formatOnSave": false // Markdownは除外
}
}
パフォーマンスの問題
大きなファイルでの整形
{
"editor.largeFileOptimizations": true,
"files.maxMemoryForLargeFilesMB": 4096
}
自動保存の設定
{
"files.autoSave": "onFocusChange",
"editor.formatOnSave": true
}
高度なカスタマイズ
カスタムキーバインド
独自のフォーマットショートカット
[
{
"key": "ctrl+shift+f",
"command": "editor.action.formatDocument"
},
{
"key": "ctrl+k ctrl+i",
"command": "editor.action.formatSelection"
}
]
Workspace固有の設定
プロジェクト別のフォーマット設定
{
"folders": [
{
"path": "./frontend"
},
{
"path": "./backend"
}
],
"settings": {
"editor.formatOnSave": true,
"[javascript]": {
"editor.tabSize": 2
},
"[python]": {
"editor.tabSize": 4
}
}
}
まとめ
VS Codeでインデントを整形する方法をまとめました:
基本的な整形方法
Shift + Alt + F
で手動整形editor.formatOnSave: true
で保存時自動整形editor.tabSize
でインデント幅を統一
高度な設定
- 言語別設定 で最適なインデント
- Prettier・ESLint でより強力な統一
- チーム統一設定 で開発環境の標準化
実用的な設定例
すぐ使える基本設定
{
"editor.formatOnSave": true,
"editor.tabSize": 2,
"editor.insertSpaces": true,
"editor.detectIndentation": false
}
プロフェッショナル設定
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.codeActionsOnSave": {
"source.organizeImports": true,
"source.fixAll": true
},
"[javascript]": {
"editor.tabSize": 2
},
"[python]": {
"editor.tabSize": 4,
"editor.defaultFormatter": "ms-python.black-formatter"
}
}
コメント