Cursorの『キーバインド・マクロ』完全カスタマイズ:AIプロンプトをワンキーで呼び出す極限の効率化アーキテクチャ
単に「Cmd + K を押してAIにコードを書かせる」「Cmd + L でチャットを開く」——もしあなたがCursorをこの程度の使い方で留めているとしたら、このエディタが秘めている真の潜在能力の10%も引き出せていません。
AI時代におけるエンジニアの真のボトルネックは、コードのタイピング速度ではなく「人間の思考(意図)をAIへのコンテキストおよび命令に変換するオーバーヘッド(思考のコンテキストスイッチ)」です。
優れたテックリードやプロダクトアーキテクトは、開発中に頻出しがちな「テストコードの書く」「型定義の厳密化」「JSDoc/GoDocの付与」「エラーログの構造化解析」といった定型的なAIリクエストを、手入力でプロンプトとして打ち込むような無駄は一切しません。
本記事では、VS Codeの強固なキーバインドエンジンとCursor特有のAI機能を融合させ、よく使うプロンプトや修正パターンを1キー(あるいは一連のマクロ)で即座に実行する高度な環境構築について解説します。
—
1. Cursorの内部挙動とキーバインド・エンジンの構造理解
カスタマイズに入る前に、Cursorが内部でどのようにキーバインドとAI機能を連携させているかのメカニズムを理解しておきましょう。
CursorはVS Code Forkとして構築されているため、基本的にはVS Codeの`keybindings.json`のイベントループと`when`コンテキスト評価エンジンに依存しています。しかし、その背後には「Cursor Native AI Layer」が存在し、以下の独自の内部コマンド群がIPC(プロセス間通信)を経由して拡張されています。
- `aichat.newchataction`(Chat UIの呼び出し)
- `editor.action.inlineDiff`(Inline Edit / Cmd+K の呼び出し)
- `composer.startComposerPrompt`(Composer機能の呼び出し)
- `cursor.cpp.`(Cursor Tab / Copilot++ の予測制御)
通常、エンジニアが`Cmd + K`を押した際、エディタ内部では以下のシーケンスがミリ秒単位で動いています。
[Key Press: Cmd+K]
│
▼
1. VS Code Keybinding Engine (`when`条件判定: editorTextFocus)
│
▼
2. Trigger Command: `editor.action.inlineDiff`
│
▼
3. Open Floating Inline UI & Capture Selection AST
│
▼
4. [User Inputs Text] -> Send to Cursor AI Gateway (gRPC/HTTP2)
│
▼
5. Context Aggregator (.cursorrules + Workspace Indexing)
│
▼
6. Stream Response & Apply Unified Diff to Buffer
私たちが目指す「ワンキーによるAIプロンプト呼び出し」の神髄は、「4. [User Inputs Text]」のプロセスを自作のコマンド・マクロで自動化し、コンテキスト認識とプロンプト注入をキー押下の瞬間に完了させることにあります。
—
2. 【必修】キーバインド自動化を実現する「神拡張機能」
VS Code/Cursor標準の機能だけでは、「特定のテキストを入力しながらコマンドを連続実行する」マクロ機能が不足しています。これを補うために、以下の拡張機能を導入します。
導入必須:`multi-command` (ryuta46.multi-command)
複数のVS Codeコマンドをシーケンシャルに実行し、クリップボード操作やテキスト挿入、キーボードショートカットのシミュレーションを可能にする極めて強力な拡張機能です。
—
3. 究極の `keybindings.json` & `settings.json` 設定レシピ
それでは、実際に実務の開発現場で劇的な効果をもたらす設定ファイルを記述していきましょう。
以下の設定では、以下の4つの超高頻度タスクを完全ワンキー化します。
1. `Ctrl + Alt + T`: 選択中のコードに対する「堅牢なプロダクション品質のユニットテスト自動生成」
2. `Ctrl + Alt + R`: 選択中のコードの「リファクタリング(パフォーマンス・可読性・型安全性の改善)」
3. `Ctrl + Alt + D`: 選択中のコードに対する「詳細なドキュメント(TSDoc / JSDoc / GoDoc)の自動付与」
4. `Ctrl + Alt + E`: 直前に発生したターミナルエラーログを自動読み込みした状態での「Composer一括バグ修正」
① `settings.json`(マクロの定義側)
まず、`settings.json` に実行したいマクロのシーケンスと定型プロンプトを定義します。
{
// =========================================================================
// multi-command 設定: Cursor AI 呼び出しマクロ定義
// =========================================================================
“multiCommand.commands”: [
{
“command”: “cursor.macro.generateUnitTest”,
“label”: “AI: ユニットテスト自動生成”,
“sequence”: [
// 1. 選択範囲をクリップボードに一時コピー(コンテキスト保持)
“editor.action.clipboardCopyAction”,
// 2. Cursor Inline Edit (Cmd+K) を起動
“editor.action.inlineDiff”,
// 3. プロンプトテキストを入力フィールドに挿入(少しのウェイトを置く)
{
“command”: “type”,
“args”: {
“text”: “/test 以下のコードに対するユニットテストを作成してください。エッジケース、異常系、境界値テストを網羅し、モックが必要な場合は最小限のインターフェースで作成すること。”
}
}
// 注: ユーザーが内容を確認してEnterを押せるように、あえて送信コマンドは自動化せず止めるのがコツ
]
},
{
“command”: “cursor.macro.refactorCode”,
“label”: “AI: コードのリファクタリング”,
“sequence”: [
“editor.action.clipboardCopyAction”,
“editor.action.inlineDiff”,
{
“command”: “type”,
“args”: {
“text”: “以下のコードをリファクタリングしてください。計算量の削減、ネストの浅く化、命名の明確化、そしてDRY原則の適用を徹底してください。ロジックの挙動を変更してはなりません。”
}
}
]
},
{
“command”: “cursor.macro.addDocstrings”,
“label”: “AI: ドキュメントコメント付与”,
“sequence”: [
“editor.action.inlineDiff”,
{
“command”: “type”,
“args”: {
“text”: “このコードに対して、型定義、引数の意味、戻り値、投げる可能性のある例外(Throws)を記載した詳細なドキュメントコメント(JSDoc/TSDoc/GoDoc)を日本語で付与してください。”
}
}
]
},
{
“command”: “cursor.macro.fixTerminalErrorWithComposer”,
“label”: “AI: ターミナルエラーをComposerで一括修正”,
“sequence”: [
// 1. ターミナル内の全選択・コピー
“workbench.action.terminal.selectAll”,
“workbench.action.terminal.copySelection”,
“workbench.action.terminal.clearSelection”,
// 2. Cursor Composer (Agentモード) を起動
“composer.startComposerPrompt”,
// 3. エラー解析用の固定プロンプトを注入
{
“command”: “type”,
“args”: {
“text”: “直近のターミナル出力で発生しているエラーを解析し、プロジェクト全体で影響のあるファイルを特定して修正計画を提示・実行してください。”
}
}
]
}
]
}
② `keybindings.json`(キー割り当て側)
次に、上記で定義したマクロを、最適なコンテキスト(`when`句)とともにキーボードショートカットへ割り当てます。
[
// =========================================================================
// AI Macro Keybindings
// =========================================================================
{
// 選択状態のコードに対してテストコード生成をトリガー
“key”: “ctrl+alt+t”,
“mac”: “cmd+alt+t”,
“command”: “cursor.macro.generateUnitTest”,
“when”: “editorTextFocus && editorHasSelection”
},
{
// 選択状態のコードに対してリファクタリングをトリガー
“key”: “ctrl+alt+r”,
“mac”: “cmd+alt+r”,
“command”: “cursor.macro.refactorCode”,
“when”: “editorTextFocus && editorHasSelection”
},
{
// カーソル位置の関数/クラスにドキュメントを生成
“key”: “ctrl+alt+d”,
“mac”: “cmd+alt+d”,
“command”: “cursor.macro.addDocstrings”,
“when”: “editorTextFocus”
},
{
// ターミナルでエラーが出た際、ワンキーでComposerを起動して修正を開始
“key”: “ctrl+alt+e”,
“mac”: “cmd+alt+e”,
“command”: “cursor.macro.fixTerminalErrorWithComposer”,
“when”: “terminalFocus”
},
// =========================================================================
// Cursor 隠れた標準強力ショートカットの補強・爆速化
// =========================================================================
{
// 選択したコードをChatに直接「コンテキスト参照」として追加する隠れた名機能
“key”: “ctrl+shift+l”,
“mac”: “cmd+shift+l”,
“command”: “aichat.addchoicetochat”,
“when”: “editorTextFocus && editorHasSelection”
},
{
// ターミナルの最後のエラーコマンドを即座にAI Chatに送る
“key”: “ctrl+shift+k”,
“mac”: “cmd+shift+k”,
“command”: “workbench.action.terminal.sendSequence”,
“args”: {
“text”: “cursor-explain-terminal\u000d”
},
“when”: “terminalFocus”
}
]
—
4. プロジェクト特有のAIコンテキスト(.cursorrules)との連携設計
キーバインドによるプロンプト挿入は強力ですが、プロンプトの中にプロジェクト固有のアーキテクチャルールを長々と書くのはアンチパターンです。
プロンプトは「動作の起動(Verb)」に特化させ、システム全体の文脈や制約(Rules)はリポジトリ直下の `.cursorrules` に集約・移譲するのが最もエレガントな設計です。
ベストプラクティス構成案:`.cursorrules`
Project Architectural Rules & AI Directives
Code Generation Standards
- Language: TypeScript 5.x (Strict Mode enabled)
- Testing Framework: Vitest + Testing Library
- Styling: Tailwind CSS
Execution Guidelines for Keybound Prompts
1. When /test is invoked:
- Always place test files in `__tests__` directory adjacent to the target file.
- Use `describe`, `it`, and `expect` from `vitest`.
- Never mock internal module logic unless it interacts with network/DB I/O.
2. When /refactor is invoked:
- Prioritize immutability (use `readonly`, `const`, and `Object.freeze` where applicable).
- Ensure cyclomatic complexity per function remains under 10.
キーバインド経由で「`/test 以下のコードに対するユニットテストを作成してください…`」と発火されると、Cursor内部のコンテキストアグリゲーターがこの `.cursorrules` を自動的にオーバーレイします。
これにより、わずか1回のキー押下で「プロジェクト規約を完全に遵守したテストコード」が数秒で生成されるという究極の自動化が完成します。
—
5. チーム開発における設定の共有化戦略(Dev Containers / Workspace Config)
個人の環境でどれほど素晴らしいキーバインド・マクロを組んでも、チーム全体に波及しなければ組織全体の開発速度は最大化されません。Cursor/VS Codeの特性を活かし、チーム全員が即座にこの超効率化環境を再現するための戦略を伝授します。
`.vscode/settings.json` によるマクロのコミット
前述の `multiCommand.commands` の設定は、プロジェクトリポジトリの `.vscode/settings.json` に含めてGit管理下に置くことが可能です。
my-awesome-project/
├── .cursorrules # AIに対するコンテキスト制約
├── .vscode/
│ ├── extensions.json # 必須拡張機能(multi-command)の推奨
│ └── settings.json # 共有マクロプロンプトの定義
`.vscode/extensions.json`
{
“recommendations”: [
“ryuta46.multi-command”
]
}
チームメンバーは、リポジトリをクローンして推奨拡張機能を有効化するだけで、定義されたマクロコマンド (`cursor.macro.generateUnitTest` 等) が使用可能な状態になります。
キー割り当て(`keybindings.json`)自体は個人のキーボード習慣(JIS/US配列、Vimキーバインドの有無等)に依存するため個人設定に委ね、「実行されるコマンドマクロ(定型処理)」をリポジトリレベルで共有するのが最も摩擦の少ないスマートな運用ルールです。
—
6. まとめ:タイピングを捨て、思考の「指揮」に集中せよ
本稿で解説したアーキテクチャの真価は、単にタイピングの数を減らすことではありません。
1. コードを選択する
2. `Cmd + Alt + T` を叩く
3. `.cursorrules` と事前定義プロンプトを合成した最適解が差分(Diff)として現れる
4. 内容をレビューし `Cmd + Enter` で適用する
この一連のフローにおいて、あなたの思考は「プロンプトをどう書くか」という雑念から完全に解放され、「生成されたコードのロジックがビジネス要件を満たしているか」という本質的なレビュー作業のみに集中できるようになります。
AIエディタ時代のトップエンジニアとは、コードを速く打つ人間ではなく、AIという強力な計算資源を最も少ない摩擦でコントロールする「指揮者(Orchestrator)」です。今すぐご自身の `keybindings.json` を開いてカスタマイズを開始し、その圧倒的な開発速度の差を体感してください。