はじめに

CursorのTab補完は、AI駆動開発の中核を担う機能です。単なるコード補完ではなく、開発者の意図を予測し、複数行にわたる編集を一括で提案する高度なオートコンプリート機能を提供します。

本記事では、CursorのTab補完機能の基本操作を習得し、日常的なコーディングで活用できるようになることを目指します。この記事を読むことで、以下のことができるようになります。

  • Tab補完の仕組みと動作原理を理解できる
  • ゴーストテキストと差分ポップアップの読み方がわかる
  • Tab/Escによる受け入れ・却下操作を習得できる
  • Ctrl+Rightによる単語単位の部分受け入れができる
  • 直近の編集履歴を活かした効率的なコーディングができる

実行環境と前提条件

本記事の内容を実践するための環境要件は以下のとおりです。

項目 要件
オペレーティングシステム Windows 10以上、macOS 10.15以上、Ubuntu 20.04以上/Debian 10以上
Cursor バージョン 2.3以降(2025年12月時点の安定版)
インターネット接続 必須(AIモデル利用に必要)

前提条件

  • Cursorがインストールされ、アカウントでログイン済みであること
  • プログラミングの基礎知識があること(言語は問いません)

期待される結果

本記事の手順を完了すると、以下の状態になります。

  • Tab補完の基本操作(受け入れ・却下・部分受け入れ)を自在に使える
  • 提案の表示形式を理解し、適切に判断できる
  • Tab補完の学習機能を意識した効率的なコーディングができる

Tab補完とは何か

CursorのTab補完は、Cursorが独自に開発したオートコンプリート専用のAIモデルです。従来のコード補完ツールとは異なり、以下の特徴を持っています。

従来のコード補完との違い

従来のコード補完は、入力中の単語やメソッド名を補完する機能でした。一方、CursorのTab補完は以下の点で大きく進化しています。

機能 従来のコード補完 Cursor Tab補完
補完範囲 単語・メソッド名 複数行を一括で変更
学習能力 なし 直近の編集から学習
コンテキスト理解 限定的 カーソル周辺の文脈を深く理解
提案の質 パターンマッチング AIによる意図予測

Tab補完でできること

CursorのTab補完では、以下のことが可能です。

  • 複数行を一括で変更
  • 不足しているimport文を自動追加
  • 連携編集のためにファイル内外をまたいで移動
  • 直近の変更、リントエラー、受け入れた編集に基づく提案を取得

ゴーストテキストと差分ポップアップ

Tab補完の提案は、状況に応じて2つの形式で表示されます。

ゴーストテキスト

新しいコードを入力している場合、補完候補は半透明のゴーストテキストとして表示されます。カーソル位置から続くコードが薄く表示され、そのままTabキーを押すと確定されます。

1
2
3
4
5
// 入力中
function calculateTax(price: number) {
  // ここでゴーストテキストが表示される
  // return price * 0.1;  ← 半透明で表示
}

ゴーストテキストは、開発者がこれから書こうとしているコードをAIが予測した結果です。入力を続けると、ゴーストテキストの内容も動的に更新されます。

差分ポップアップ

既存のコードを編集している場合、提案は現在の行の右側に差分ポップアップとして表示されます。これは、既存コードに対する変更提案であることを明確に示すためです。

1
2
3
4
// 既存コード
const tax = price * 0.08;  // [差分ポップアップ] → price * 0.1

// 差分ポップアップには変更後のコードが表示される

差分ポップアップは、変更前と変更後の違いを視覚的に確認できるため、意図しない変更を防ぐことができます。

基本操作:受け入れと却下

Tab補完の基本操作は非常にシンプルです。提案が表示されたら、3つの選択肢があります。

Tabキーで受け入れる

提案を受け入れる場合は、Tabキーを押します。ゴーストテキストまたは差分ポップアップに表示された内容がそのままコードに適用されます。

操作 キーバインド 効果
受け入れ Tab 提案をすべて適用
1
2
3
4
5
6
7
8
9
// 提案表示中
function greet(name: string) {
  // return `Hello, ${name}!`;  ← ゴーストテキスト
}

// Tab押下後
function greet(name: string) {
  return `Hello, ${name}!`;  // ← 確定
}

Escキーで却下する

提案が意図と異なる場合は、Escキーを押して却下します。ゴーストテキストが消え、そのまま入力を続けられます。

操作 キーバインド 効果
却下 Esc 提案を非表示にする

却下した後も、入力を続けると新しい提案が表示されることがあります。AIは開発者の入力パターンを観察し、より適切な提案を試みます。

入力を続けて無視する

提案を明示的に却下せず、そのまま入力を続けることも可能です。新しい文字を入力すると、ゴーストテキストは自動的に更新されるか、消えます。

1
2
3
4
5
6
7
8
9
// ゴーストテキスト表示中
function add(a: number, b: number) {
  // return a + b;  ← ゴーストテキスト
}

// "const"と入力し始めると
function add(a: number, b: number) {
  const // 新しいゴーストテキストが表示される
}

単語単位の部分受け入れ

提案の一部だけを受け入れたい場合は、Ctrl+Rightキー(macOSではCtrl+→)を使用します。この操作により、提案を単語単位で受け入れることができます。

Partial Acceptsの使い方

単語単位の受け入れは、以下のようなシーンで特に有効です。

  • 提案の前半は正しいが、後半を修正したい場合
  • 変数名や引数の一部だけを採用したい場合
  • 提案を参考にしつつ、カスタマイズしたい場合
操作 キーバインド 効果
単語単位受け入れ Ctrl+Right 次の単語だけを受け入れる
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
// ゴーストテキスト
// calculateTotalPrice(items, taxRate, discount)  ← 提案

// Ctrl+Right を1回押下
calculateTotalPrice // ← ここまで確定

// Ctrl+Right をさらに押下
calculateTotalPrice(items // ← ここまで確定

// 必要な部分だけ受け入れ、残りは自分で入力
calculateTotalPrice(items, 0.1) // ← 完成

Partial Acceptsの有効化

単語単位の受け入れを使用するには、設定で有効化する必要があります。

  1. Cursor Settingsを開く(Ctrl+Shift+Pでコマンドパレットを開き、「Cursor Settings」と入力)
  2. 「Tab」セクションを選択
  3. 「Partial Accepts」を有効化

また、キーバインドをカスタマイズしたい場合は、editor.action.inlineSuggest.acceptNextWordコマンドに任意のキーを割り当てることができます。

直近の編集履歴を学習する仕組み

CursorのTab補完が他のコード補完と大きく異なる点は、開発者の編集パターンを学習する点です。

学習の仕組み

Tab補完は以下の情報を学習に活用します。

  • 直近の編集内容
  • Tabで受け入れた提案
  • Escで却下した提案
  • リントエラーの修正パターン

これにより、開発者の意図をより正確に予測できるようになります。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
// 例:関数名をcamelCaseからsnake_caseに変更した場合

// 変更前
function getUserName() { ... }

// 変更後(手動で修正)
function get_user_name() { ... }

// 次の関数でTab補完を使用すると...
function getEmailAddress() { ... }
// ↓ Tab補完が学習した結果
function get_email_address() { ... }  // snake_caseで提案される

学習を活かしたコーディング

Tab補完の学習機能を最大限に活かすには、以下のポイントを意識します。

  1. 最初の編集を丁寧に行う: 最初の編集パターンがその後の提案に影響するため、一貫したスタイルで編集を始める
  2. 意図的にTab/Escを使い分ける: 良い提案はTabで受け入れ、不適切な提案はEscで却下することで、AIの精度が向上する
  3. 連続した編集を行う: 同じファイル内で連続して編集を行うと、文脈をより深く理解した提案が得られる

Tab補完の設定

Tab補完の動作は、設定画面からカスタマイズできます。

主要な設定項目

設定項目 説明
Cursor Tab 直近の編集内容を踏まえ、カーソル周辺にコンテキスト対応の複数行候補を表示
Partial Accepts Ctrl+Rightで候補の次の単語だけを受け入れる
Suggestions While Commenting コメントブロック内でTabによる補完を有効化
Whitespace-Only Suggestions 体裁(空白など)にのみ影響する変更を許可
Imports TypeScriptの自動インポートを有効化
Auto Import for Python (beta) Pythonプロジェクトの自動インポートを有効化

Tab補完の一時無効化

特定の状況でTab補完を無効化したい場合は、ステータスバー(画面右下)から以下の操作が可能です。

  • スヌーズ: 指定した時間だけTabを一時的に無効化
  • 全体で無効化: すべてのファイルでTabを無効化
  • 拡張子ごとに無効化: 特定のファイル拡張子(例: MarkdownやJSON)でTabを無効化

Markdownファイルを編集する際など、Tab補完が邪魔になる場合は、拡張子ごとの無効化が便利です。

よくある質問

コメント入力時にTab補完が邪魔な場合

コメントを書いているときにTab補完が干渉する場合は、「Suggestions While Commenting」設定を無効化することで解決できます。

Tabキーのショートカットを変更したい場合

Tab補完の受け入れに使用するキーは、キーバインド設定で変更できます。コマンドパレットから「Keyboard Shortcuts」を開き、editor.action.inlineSuggest.commitのキーバインドを変更します。

Tab補完が表示されない場合

Tab補完が表示されない場合は、以下を確認してください。

  1. インターネット接続が有効か
  2. Cursorアカウントでログインしているか
  3. ステータスバーでTab補完が無効化されていないか
  4. 特定の拡張子で無効化されていないか

まとめ

CursorのTab補完は、AI駆動開発を支える中核機能です。本記事で解説した基本操作をまとめると以下のとおりです。

操作 キーバインド 用途
受け入れ Tab 提案をすべて適用
却下 Esc 提案を非表示にする
単語単位受け入れ Ctrl+Right 提案を1単語ずつ受け入れる

Tab補完は使うほど賢くなります。日常的なコーディングで積極的に活用し、受け入れ・却下を意識的に行うことで、より精度の高い提案を受けられるようになります。

次の記事では、Tab補完の高度な機能として、複数行編集やファイル間ジャンプ、自動インポートなどを解説します。

参考リンク