Cursorでの自動コードフォーマット
ヒント
Cursorは、プロジェクト全体で一貫したコードスタイルを維持するための強力なコードフォーマット機能を提供しています。
フォーマッターの設定
組み込みフォーマッター
Cursorには複数の言語をサポートする組み込みフォーマッターが付属しています。使用方法:
- コマンドパレットを開く(Ctrl/Cmd + Shift + P)
- 「Format Document」と入力
- Enterキーを押す
人気のフォーマッター
- Prettier
- ESLint
# Prettierをインストール
npm install --save-dev prettier
# 設定ファイルを作成
echo {} > .prettierrc.json
# ESLintをインストール
npm install --save-dev eslint
# ESLintを初期化
npx eslint --init
設定ファイル
Prettier設定
.prettierrc.json
{
"semi": true,
"trailingComma": "es5",
"singleQuote": true,
"printWidth": 80,
"tabWidth": 2,
"useTabs": false,
"bracketSpacing": true,
"arrowParens": "avoid"
}
ESLint設定
.eslintrc.json
{
"env": {
"browser": true,
"es2021": true
},
"extends": [
"eslint:recommended",
"prettier"
],
"rules": {
"indent": ["error", 2],
"linebreak-style": ["error", "unix"],
"quotes": ["error", "single"],
"semi": ["error", "always"]
}
}
保存時のフォーマット
自動フォーマットを有効にする
.vscode/settings.json
{
"editor.formatOnSave": true,
"editor.defaultFormatter": "esbenp.prettier-vscode",
"[javascript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
},
"[typescript]": {
"editor.defaultFormatter": "esbenp.prettier-vscode"
}
}
言語固有の設定
{
"[python]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "ms-python.python"
},
"[java]": {
"editor.formatOnSave": true,
"editor.defaultFormatter": "redhat.java"
}
}
キーボードショートカット
デフォルトのフォーマットショートカット:
| アクション | Windows/Linux | macOS |
|---|---|---|
| ドキュメントのフォーマット | Shift + Alt + F | Shift + Option + F |
| 選択範囲のフォーマット | Ctrl + K Ctrl + F | Cmd + K Cmd + F |
高度な設定
ファイルを無視する
.prettierignore
# ビルド出力
dist/
build/
# 依存関係
node_modules/
# 生成されたファイル
*.generated.*
ESLintとの統合
.eslintrc.json
{
"extends": [
"eslint:recommended",
"plugin:prettier/recommended"
],
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "error"
}
}
カスタムフォーマットルール
スタイルガイドの適用
.prettierrc.json
{
"overrides": [
{
"files": "*.component.ts",
"options": {
"printWidth": 120,
"singleQuote": true
}
},
{
"files": "*.spec.ts",
"options": {
"printWidth": 80,
"semi": true
}
}
]
}
プロジェクト固有のルール
.editorconfig
root = true
[*]
end_of_line = lf
insert_final_newline = true
charset = utf-8
indent_style = space
indent_size = 2
[*.{js,ts}]
quote_type = single
[*.py]
indent_size = 4