Cursorの主要機能まとめ (2025年5月版)

Cursor には従来の IDE(統合開発環境) にはない AI を使った機能がふんだんに盛り込まれています。大まかに以下の 4 つです。

  • チャット (Agent モード)
  • チャット (Ask モード)
  • Tab キー
  • Inline Edit (⌘K) / Ctrl+K

「WEB アプリが爆速で出来た」といった声を SNS で聞くことも多い AI エージェントによるプログラミングですが、使い込んでいると見えてくる、理想と現実のギャップもあります。そんな事例も紹介しつつ、各機能で何ができるのか? を把握して最先端プログラミングへの一歩を踏み出しましょう。

チャット (Agent モード)

エージェント (代理) 機能は AI がプログラマーの指示に従って一連のタスクを自動で実行してくれます。エージェントモードを使うと、例えば「ログイン機能を実装してテストも通して」といった要求に対し、ファイル/フォルダの作成、コードの編集からコマンドの実行までを AI が自動で行います

CleanShot20250528055958@2x.png

エージェントモード

エージェントモードでは、AI が与えられた高レベルの指示を完了するまで自動で作業を進めます。複数のファイルにまたがる変更やコンパイル・実行なども一括して行い、開発者は結果を評価し、受け入れるかどうか判断します。

後述するように、コマンドを実行する、などの各段階で開発者が確認できるようになっていたり、コード変更前に自動でバックアップを取ったりと、安全に配慮されています。

AI が生成したコードを受け入れるかどうか、編集箇所ごとに決められます。

CleanShot20250528060252@2x.png

ファイルごとに一気に受け入れる or 拒否したり、

CleanShot20250528061105@2x.png

あるいは、複数ファイルにまたがる変更を一気に受け入れる or 拒否する事も出来ます。

CleanShot20250528061159@2x.png

反対に、一度受け入れた提案でも指示を出した段階にさかのぼり、元に戻せるようになっています。

CleanShot20250528060804@2x.png

プログラミングにおける意味

エージェントモードは、開発者の「こうしてほしい」という要望を理解し、コード編集やビルド、テスト実行など必要な作業を AI がほとんど代行する機能です。まるで人間のアシスタントに「このバグを直しておいて」と頼むように、AI が具体的な手順を自律的に考え実行してくれます。

ただし、曖昧な指示よりも具体例な指示の方が精度が高いのは言うまでもありません。私はプログラマ不要論に少し懐疑的です。具体例な指示を出すにはそれなりに技術を理解していないと出せませんから。

AI エージェントの登場により、例えばログイン機能を自力で実装しきる必要はなくなるかもしれませんが、非エンジニアとコミュニケーションを取り、文章化されていない要件まで含めてプロジェクトを咀嚼し、技術全体を俯瞰してどの技術をどう組み合わせるか、どのように AI に指示を出すか、といったより抽象的・高度な能力が求められるようになっていくのではないでしょうか。

曖昧な例
「ログイン機能を実装してください」

# views.py
from django.shortcuts import render, redirect
from django.contrib.auth import authenticate, login
def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) return redirect('home') return render(request, 'login.html')

問題点

  • CSRF トークンの扱いが明示されていない
  • フォームのエラーメッセージ表示や入力バリデーションが無い
  • URL 設定やテンプレート側の実装が不足

具体的な指示
「Django の AuthenticationForm を使い、CSRF 対策とフォームのバリデーションを含むログインビューを実装し、成功または失敗時はメッセージを表示してください」

# views.py
from django.shortcuts import render, redirect
from django.contrib.auth.forms import AuthenticationForm
from django.contrib.auth import login
from django.contrib import messages
def login_view(request): if request.method == 'POST': form = AuthenticationForm(request, data=request.POST) if form.is_valid(): user = form.get_user() login(request, user) messages.success(request, 'ログインに成功しました。') return redirect('home') else: messages.error(request, 'ユーザー名またはパスワードが正しくありません。') else: form = AuthenticationForm(request) return render(request, 'login.html', {'form': form})

このような簡単な単一のスクリプトを作るくらいなら AI だけに任せても出来てしまうことも増えてきました。しかし、商業で必要になるプログラミングの成果物は、多数のモジュールに渡って機能が連携した膨大なファイルから成り立っているのが普通です。現在の AI はまだそこまで包括的にプロジェクトの面倒を見られません。

実体験として、我々のようなエンジニアがどこかで介入しないと一見上手く行くように見えますが、どこかにバグが潜んでいます。私は AI によってエンジニアが不要になる、という見方はまだまだ先の話ではないかと思います。AI という革新的なツールをいかにに使いこなすか? がこれから求められるようになります。Cursor などの AI 統合開発環境はその筆頭格でしょう。

従来のプログラミングとの違い

従来はプログラマー自らが「コードの修正→保存→ビルド→テスト→エラー対応…」という一連の手順を何度も繰り返していました。エージェントモードでは、この手順を AI がまとめて行うため、人間は指示を出して結果を評価するだけで済みます。これにより開発速度が大幅に向上します。また、途中経過も逐一表示されるので、自動化されていても何が起きているか把握できる点も安心です。

与えた指示が終わったら通知音を鳴らすように設定しておけば AI に仕事を任せている間、ずっと画面を見守る必要はありません。この時間を使って別の仕事をしたり、メールチェックしたり、Youtube を楽しんだりできます。

CleanShot20250525115005@2x.png

具体例

例えば「ログイン機能を実装して、その部分のユニットテストも作成してください」とエージェントに依頼すると、AI はまずログイン機能のコードを書き、次に必要ならデータベース設定や関連ファイルも編集します。ユニットテストとは、コード、プログラムが期待した動きになるかどうか、確認するためのプログラムです。(先述のように具体的な指示の方が精度が高いのですが、簡略化のためあまり曖昧な指示になっています。これ以降の事例も同様です)

# app/auth.py
from flask import Flask, request, jsonify
from werkzeug.security import check_password_hash
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login(): data = request.json # 仮ユーザー情報 user = {'username': 'alice', 'password_hash': 'pbkdf2:sha256:...'} if data['username'] == user['username'] \ and check_password_hash(user['password_hash'], data['password']): return jsonify({'status': 'success'}), 200 return jsonify({'status': 'failure'}), 401

その後、自動でテストコードを生成し、プロジェクトのテストコマンドを実行します。仮にテストでエラーが出れば、原因を分析してコードを修正し、再度テストを実行…という流れを人手を介さず繰り返し、最終的にテストが通るところまで完了してくれます。ただし処理するべきコードの量が多いと処理漏れが発生することがありますので、よく注意して評価しなければなりません。まあ、人間に頼んだ時も同じことが言えるのですが。

import pytest
from app.auth import app
@pytest.fixture
def client(): return app.test_client()
def test_login_success(client): response = client.post('/login', json={ 'username': 'alice', 'password': 'correct_password' }) assert response.status_code == 200 assert response.json['status'] == 'success'
def test_login_failure(client): response = client.post('/login', json={ 'username': 'alice', 'password': 'wrong_password' }) assert response.status_code == 401 assert response.json['status'] == 'failure'

コンテキスト (文脈) の自動取得

エージェントが作業を行う際に必要となる周辺情報を自動で集めてくれる機能です。エディタ内でのカーソルの位置、プロジェクト内の関連するコードや設定ファイル、エラーメッセージ、コードの変更履歴などを AI が自律的に検索し、今のタスクに役立つ情報をモデルに提供します。開発者が逐一「このファイルも見て」と指示しなくても、AI が賢くコードベース (プログラムの全体) を理解してくれます。

プログラミングにおける意味

プログラミングにおいて「コンテキスト」とは、ある処理や問題に関連する周辺情報(コードや設定、利用しているライブラリの情報など)のことです。コンテキストの自動取得機能により、AI は今取り組んでいる課題に必要な他のファイルの内容や定義を自動で読み込みます。つまり、人間の開発者が「あのクラスの実装はどうなっていたかな?」と調べる代わりに、AI が自分で必要な部分を把握してくれるイメージです。

従来のプログラミングとの違い

ChatGPT や Gemini の Web アプリでも AI によるコード生成はできますが、カーソルと違って、逐一コンテキストを渡す必要があります。Cursor では、自律的に文脈を理解します。人間が指示する場合も、エディターと統合されているので、指示出しが簡単です。

CleanShot20250528064315@2x.png

Cursor ではコンテキスト取得が自動化されているため、その手間が省けます。AI がコードベース全体を見渡し「これが関係しそうだ」と判断した部分を推測して参照するので、人間が文脈を補足しなくても適切な回答やコード生成が得られる点が従来と大きく異なります。しかし、人間が明示的に指示してやった方が精度が高くなります

明示的に指示を出すには @ Add context を押して対象を選択します。

CleanShot20250528100913@2x.png

あるいはテキスト入力エリアに @ を入力します。 @ の前に文字が入力されていると機能しないのでその場合は半角スペースを入れてから @ を入力します。

CleanShot20250528073729@2x.png

具体例

例えば現在編集中のコードでエラーが発生したとします。その原因が別ファイルの関数にある場合、Cursor のエージェントはその別ファイルを読み込み、問題の関数の実装を確認します。そしてエラーの原因を突き止めた上でコードを自動修正します。開発者は自分でプロジェクト全体を検索することなく、AI が自律的に調査・修正してくれます。

コマンドの実行

Cursor のエージェントが必要に応じてターミナルコマンド(シェルコマンド)を自動生成・実行してくれる機能です。ターミナルとはいわゆる「黒い画面」で、文字だけでコンピュータに指令を出すことです。映画でもハッカーがそんなことをしているシーンがしばしば登場します。

CleanShot20250526064226@2x.png

ターミナルコマンドの例として「プロジェクトをビルドして」と AI に頼むと、AI は npm run buildmake など適切なコマンドを自動で端末に入力し実行します。デフォルトでは実行前に確認を求める仕組みになっており、ユーザーの許可無しに勝手にコマンドが走らないよう安全面も考慮されています。

なぜ事前に確認を求めるというと、コマンドの中にはファイルやフォルダを削除したり、データベースの構造を変えたりするような後戻りできないものがあるためです。

プログラミングにおける意味

開発ではコードを書くだけでなく、ビルドやテスト、ライブラリのインストールなど様々なコマンド操作が伴います。コマンド実行機能により、AI がプログラマの代わりにこれらの操作も自動化します。例えば AI がコードを書いた後、「このコードをテストするために pytest を実行しよう」と自分で判断し実行提案でしてくれるのです。

CleanShot20250528102100@2x.png

コマンド実行は初期設定では自動実行せず、ユーザーが実行ボタンをクリックして初めて実行されます。自動実行させたい場合は、設定画面から行います。

従来のプログラミングとの違い

通常、コードを書いた後にビルドやテストを行う際は開発者自身がターミナルを開いてコマンドを入力します。またコマンドのオプションや正確な名前を覚えていなければなりません。一言一句正確でないとエラーが発生します。私も以前はよくググって (もう死語ですかね) いました。今ではその必要はほとんどありません。

なぜなら Cursor では AI が望ましいコマンドを推測し、自動で実行提案まで行います。従来手動で行っていた環境構築やビルド・実行の作業をスムーズに代行してくれる点が大きな違いです。先述のように破壊的変更の危険があるため、実行前に確認ダイアログが表示される仕様になっています。

具体例

例えば、新しくパッケージを追加するコードを書いた場合、通常は自分で「npm install 新しいパッケージ名」とコマンドを実行するでしょう。Cursor のエージェントを使えば、コードに新しい依存関係を書き加えた際に AI がそれを検知し、自動で「依存関係をインストールしますか?」と提案してくれます。承認すれば AI が端末で npm install を実行し、続けて「ではアプリをビルドしましょうか?」と npm run build を提案してくれる、といった具合に対話的に進行します。

エラーの繰り返し修正

Cursor が Lint エラー (コードの文法ミスやスタイル違反のこと) や実行時エラーなどを検知すると自動的にコードを修正し、再度実行することを繰り返す機能です。

プログラムがエラー無く動作するまで AI が何度でも修正を試みてくれるため、開発者の手作業によるデバッグ回数を減らすことができます。

プログラミングにおける意味

コードを書いて実行した際にエラーが出るのは日常茶飯事ですが、この機能により AI がエラー内容を解析し、原因を取り除く修正を提案・適用してくれるようになります。Lint エラーについても、自動で修正してくれるため、コーディング標準に沿った綺麗なコードを保ちやすくなります。

従来のプログラミングとの違い

従来はエラーが発生する度にエラーメッセージを読み、該当箇所のコードを人間が修正して再実行するという繰り返しが必要でした。Cursor ではそのループを AI が行います。エラーメッセージを受け取った AI が即座にコードのどこが悪いかを特定し、修正するため、人間は提案を確認して受け入れるだけで済みます。開発者自身がデバッグサイクルを何度も回す必要がない点が革新的です。デバッグとはバグの発生箇所を調査し、バグを取り除くことです。

以前はエラーが出るとググっていくつものサイトを巡回し、自分のケースに当てはまるものを探し出し、自力でエラーを解決するというのが当たり前でした。しかし、AI の登場によって、この一連の作業は劇的に楽になりました。

具体例

例えば、Python では、if 文の次の行はインデントしなければならないなどの決まりがあります。これを守っていないと Lint エラーになりますが、それを自動で認識し修正を行ってくれます。

また、プログラム実行時にエラーが発生するとターミナルにエラーメッセージが表示されますが、そのエラーをチャットにコンテキストとして渡すこともできます。エージェントはエラー解決のためのコードの修正やコマンドを実行します。再実行してエラーになったら、またデバッグを行い、エラーがなくなるまで繰り返す、というサイクルを行ってくれます。

CleanShot20250526112935@2x.png

しばしばこのデバッグサイクルが同じところをぐるぐると回ってしまい、いわゆる無限ループに陥ることがあります。ツールの呼び出しが 25 回までに制限されているため、修正箇所が多いとツール使用回数に達して途中でエージェントの動きが止まってしまいます。

ファイルを読む

  • コードベース内のファイルの内容を読みます。
  • 最大モードで最大 750 行
  • 他のモードでは最大 250 行

ディレクトリをリストする

  • ファイルの内容を読み取らずに、ディレクトリの構造を読み取る。

コードベース

  • インデックス付きコードベース内でセマンティック検索を実行します。

グレップ

  • ファイル内の正確なキーワードやパターンを検索します。

ファイルを検索する

  • 曖昧検索を使用して、名前でファイルをすばやく見つけます。

ウェブ

  • 検索クエリを生成し、Web 検索を実行します。

ルールを取得

  • ルールの種類と説明に基づいて特定のルールを取得します。
  • ルールとは Cursor 全体あるいはプロジェクト に対する指示です

これを執筆している段階では、まだまだ AI エージェントに全てを任せることはできません。人間がハンドルを握って、修正箇所を小さなものに限定するように指示したり、具体的な修正内容を指示するといった配慮が必要な場面は少なくありません。

画像を使用

チャットに画像をドラッグ&ドロップしたり、入力欄下の画像アイコンをクリックして画像ファイルを添付することで、AI に視覚情報を与えられる機能です。Cursor は画像内の文字を読み取ったり(OCR)、内容を解析してテキスト化し、AI への追加コンテキストとして利用します。後述の Ask モードでも使用できます。

プログラミングにおける意味

プログラミング中に直接関係する画像情報(例:スクリーンショットに写ったエラーメッセージや設計図)を AI に共有し、視覚的なデータも含めて支援を受けられるます。AI に、画像から得た情報まで加味させることで、言葉では説明しにくい、あるいは面倒な場合でも、回答やサポートが期待できます。

従来のプログラミングとの違い

従来はエラー画面のスクリーンショットを見ながら自分で文字起こししたり、UI デザインの画像を見比べながら手動で実装していました。Cursor では画像を直接 AI に渡せるため、画像中の情報を AI が理解しコーディング支援してくれます。

具体例

完成イメージの UI (ユーザーインターフェース) 画像を渡し「このデザインを HTML/CSS で実装して」と指示すれば、画像を解析して大まかなレイアウトを推測し、「まずヘッダー部分に○○、CSS で△△…」と実装してくれます。

余談ですが、デザインを実装する場合、より確実に期待する UI を実装するには MCP を使って Figma などと連携するとよいです。

ドキュメントを活用

外部ライブラリやフレームワークの公式ドキュメントを AI が参照できるようにする機能です。Cursor には主要なサードパーティ製ライブラリのドキュメントがあらかじめクロール・インデックス化されており、チャットで @docs と入力した後にライブラリ名を入力するだけでそのライブラリのドキュメント情報を AI に参照させることができます。

もし未登録のドキュメントが必要な場合でも、@Docs → “Add new doc” という操作で任意のドキュメントを追加し、AI に学習させることも可能です。これらの後述の Ask モードでも使用できます。

CleanShot20250528114056@2x.png

プログラミングにおける意味

これはAI に公式リファレンスを直接参照させることで、正確で信頼性の高い回答やコード補助を得るという意味があります。プログラミングでは公式ドキュメントの内容が重要ですが、人間が都度読みに行くのは大変です。

Cursor では AI が必要箇所をドキュメントから拾ってきてくれるため、常に最新かつ正確な情報に基づいたサポートを受けられます。が、過度な期待は禁物です。結局、自分でドキュメントを読んで実装した方が正確に実装できることも少なくありません。

従来のプログラミングとの違い

従来、コードを書いていて分からないことがあれば公式ドキュメントサイトを開いて検索する必要がありました。また、一般的な AI チャットは訓練データに古い情報しか無かったり不正確な知識を返すこともあります。Cursor のドキュメント活用機能では、AI が公式情報源をその場で参照するため回答の信頼性が上がります。開発者はエディタを離れずに必要なドキュメント知識を得られるという点でとても便利です。

具体例

実装済みの Python モジュール (ファイル) に対して @docs に続いて langchain でドキュメントを指定し、リファクタリングを依頼するという使い方ができます。

CleanShot20250528114857@2x.png

チャット (Ask モード)

Cursor の Ask モードはエディタ内で AI と対話しながらコードの相談や質問ができる機能で、常に現在開いているファイルやカーソル位置の情報を把握した上で回答や提案を行ってくれます。

エージェントとの違いは、エージェントはコードの編集やコマンドの実行を自動で行うのに対して、チャットでは編集や実行は行わずに質問に回答するという違いがあります。

CleanShot20250528104039@2x.png

画面を切り替えることなく、その場で「このコードにバグはないかな?」「どういう方針で実装したらいいかな?」などと質問すれば、AI がコンテキストを理解した上で答えてくれます。また、必要に応じて特定のコード部分やプロジェクト全体をコンテキストとして会話に含めることも可能です。プログラミング初心者や未経験者にとって非常に頼りになる教師のような存在です。

ブラウザで実行する ChatGPT のような WEB アプリとの違いは、ブラウザにプロジェクトのファイル群をアップロードする必要がないという点です。これはかなり楽です。

コンテキストを理解させる必要がない単純な質問の場合、Web 版の ChatGTP などに聞くのも一つの手です。なぜなら、Cursor は使用回数に制限があるためです。無料プランであれば月 50 回の低速リクエスト、プロプランの場合は月 500 回の高速リクエストという制限があります。

チャット

エディタ右側のチャットペインでは、人間が質問や指示を入力し、AI がそれに回答する形で対話が進みます。AI はバックエンドで高度な言語モデルを利用しており、エディタと連携して現在のコード内容を参照できます。これにより「この関数は何をしていますか?」のようなコードに踏み込んだ質問にも、AI が実際のコードを読み解いた上で答えてくれます。

プログラミングにおける意味

プログラミング中に疑問が生じたとき、チャット機能はまるでそばにいる先輩エンジニアに質問するような役割を果たします。AI がコードの文脈を理解して回答してくれるため、ドキュメントをいちいち検索したり、エラー内容をネットで調べたりする手間をその場で解消できます。チャットは常に現在のファイルや選択中のコードを把握しているので、「この部分、バグってないかな?」と聞けば AI が実際にコードを検証して助言してくれるわけです。

従来のプログラミングとの違い

従来、コードに関する質問をするには自分で調べるか、同僚に聞くか、あるいは汎用の ChatGPT などにコード断片を貼り付けて相談する必要がありました。Cursor のチャットではエディタと AI が統合されているため、画面を切り替えずシームレスに質問と回答が可能です。さらにコード内容を AI が直接参照できるため、誤解の少ない的確な回答が得やすいです。これは AI アシスタントや Web 検索にはなかった強みです。

具体例

例えばコードを書いていてエラーの原因が分からないとき、エラーメッセージの内容や該当コードをコピーしてウェブ検索する代わりに、Cursor のチャットに「このエラーは何が原因ですか?」と尋ねます。すると AI はエラーメッセージとコードを照らし合わせ、「◯◯の型が一致していないことが原因です。この変数を String 型に変換してから渡す必要があります」といった具体的なアドバイスを即座に返してくれます。また、新機能の実装方針に迷ったとき「ユーザー認証機能はどう組めばいい?」とチャットで相談すれば、コード例付きで実現方法を教えてくれるでしょう。

インスタント適用

インスタント適用は、チャット内で AI が提案したコードをワンクリックで実際のコードベースに反映できる機能です。AI から回答としてコードブロックが提示された際に、そのコードブロックの上部に表示される Apply ボタン(▶)をクリックするだけで、提案されたコードが該当ファイルに自動挿入・置換されます。

CleanShot20250528111142@2x.png

プログラミングにおける意味

AI との対話で得られたコード提案を手作業で自分のファイルにコピペする必要がなく、回答をすぐ自分のプロジェクトに取り込めるという意味で手間が省けて快適です。提案内容を確認して問題なければ即座に適用できるため、AI を活用した開発フローがスムーズになります。

従来のプログラミングとの違い

従来、たとえば ChatGPT など外部の AI から得たコード例を使うには、自分でエディタに切り替えてコピー&ペーストし、必要に応じて書式を整えるといった手間が発生していました。Cursor ではチャットとエディタが統合されており、ワンクリックで回答内容を反映できるのでそのような手間がありません。コピペミスも防げます。

具体例

例えばチャットで「この JSON 文字列をパースしてオブジェクトに変換するコードを書いて」と依頼した場合、AI が提案として何行かのコードを返してくれるでしょう。そのコードブロック上に表示される ▶ ボタンをクリックすると、Cursor は自動的に現在開いているファイル(または該当すべきファイル)にそのコードを書き込みます。結果、提案された関数を自分で写すことなくすぐに使い始めることができます。また、既存コードの修正提案であれば、対応する箇所が自動で書き換わります。

ウェブに問い合わせ

チャット内で @Web コマンドを使うことで AI にインターネット検索をさせ、最新の情報を取得できる機能です。プログラミングの疑問点によっては手元のコードだけでなく最新の技術情報や一般的な知識が必要なことがありますが、この機能により Cursor は Web 上から適切な資料を見つけて回答に反映します。エージェントモードの場合は必要に応じて自動的に Web を検索することもありますし、明示的に @web を使うことも出来ます。

プログラミングにおける意味

最新ライブラリやフレームワークの利用方法を調べたり、API 仕様やエラー解決策の最新情報を取得できます。AI が知らない直近の出来事についても調べられるため、常に最新の技術トレンドに対応できます。

従来のプログラミングとの違い

通常、開発中に最新情報を知りたい場合は自分でブラウザを開いて検索しなければなりませんでした。Cursor ではチャット内で「@Web React 最新のフックの使い方」などと入力するだけで、AI が自動でウェブ検索し結果を要約してくれる点が大きく異なります。これは従来のコードエディタには無い、仕組みです。また AI 単体では持っていない知識でも、この方法で補えるため回答の正確性・網羅性も向上します。

CleanShot20250528113743@2x.png

具体例

例えば「このエラーコードの意味は?」と聞いて AI が知らない場合でも、「@Web」で検索させれば該当エラーに関する最新の StackOverflow 回答や公式ドキュメントを見つけ出し、「エラーコード 1234 は○○を意味し、設定ファイルの△△を変更する必要があると記載があります」と答えてくれることがあります。また、新しいライブラリの使い方が分からないとき「@Web ライブラリ XYZ 使い方」と入力すれば、AI が Web 上のチュートリアル記事等を調べ、「公式サイトによると XYZ の使い方は…」と要点を教えてくれるのです。

Tab キー

Tab キーは Cursor のオートコンプリート(自動補完)機能の名前です。提案を受け入れる場合は Tab キーを押すことからこんな名前なのでしょう。キーボードの Tab キーのことをいっているのか、Cursor の Tab キーのことをいっているのか区別しにくくなってしまい紛らわしいのですが。Tab キーを押して提案を受け入れるだけで、面倒なコードを書く手間が大幅に省けます。

マルチライン編集

Cursor のオートコンプリートは従来の IDE 補完よりも強力で、現在の文脈から次に書くべきコードを複数行まとめて予測・提案してくれます。

CleanShot20250528115450@2x.png

開発途中の文脈や直前の編集内容も考慮して提案を更新してくれます。ときどき「俺の脳内スキャンしてる?」という感覚になるほど賢いです。反面そこを変えたらだめだろ、というような提案もあります。依存しすぎは事故の元です。もし余計な提案が現れたら Esc キーを押してキャンセルできます。

プログラミングにおける意味

オートコンプリートは本来、プログラミング中に変数名や関数名の入力を補助する機能ですが、Cursor の場合は AI が現在のコードやコメントを理解し、次に必要な処理そのものを予測して提示してくれる点が特徴です。つまり、自分が書こうとしていたロジックを AI が先読みして書いてくれるので、まさにペアプログラミングで相棒が続きを書いてくれるような役割を果たします。

従来のプログラミングとの違い

従来の簡易なコード補完機能では、例えば関数名の途中まで入力すると残りを補完するといった単純な提案が主でした。また IDE によっては一行程度のスニペット提案はありますが、Cursor のように複数行にわたり現在の文脈に合わせた高度な予測を行う補完はありませんでした。従来は開発者自身が考えてコードを書き進める必要があった部分を、Cursor では AI が先回りして提案してくれるため、コーディングの効率と快適さが格段に異なります。

具体例

例えば「ユーザーのリストを名前順にソートする」という関数を書こうとコメントを書いたとします。Cursor はコメント内容から意図を汲み取り、次の瞬間にはその関数の中身(ソートアルゴリズムやループ処理など)を数行にわたって提案してくれます。

# ユーザーのリストを名前順にソートする関数

AI が続きを書いてくれます。

# ユーザーのリストを名前順にソートする関数
def sort_users_by_name(users: list[dict]) -> list[dict]: """ users: {'name': str, 'age': int} の辞書のリスト 戻り値: 名前順にソートされたリスト """ return sorted(users, key=lambda u: u['name'])

こんなことができるのは LLM が「続きを書くことが得意」という性質があるためです。

開発者は Tab キーを押すだけでその提案を受け入れ、一瞬で関数の骨組みが完成します。また、変数名を入力し始めると、それに合致する既存の変数や型に応じた初期値まで含めたコードを続けて提示してくれることもあります。

下記のカーソル予測と連携して機能することも多々あり、とても便利です。

カーソル予測

Cursor が次にユーザーが編集したい箇所を予測し、自動でカーソルを適切な位置に移動させる機能です。これにより、コーディング中のカーソル移動がスムーズになります。カーソルを移動した先で先述のマルチライン編集が表示されることもあります。

カーソル予測による補完が現れなくても、編集したい箇所にカーソルを持っていくとコードを提案してくれることもあります。

なかなか賢いです。

プログラミングにおける意味

コードを書く際、開発者は頻繁にキーボードやマウスでカーソル位置を移動させます。カーソル予測機能は AI がおおよそ「次に編集したいであろう場所」を推測し、カーソルを移動させてくれるます。

従来のプログラミングとの違い

一般的なエディタでは、カーソルの移動は全てユーザーの操作(矢印キーやマウスクリック)に委ねられていました。Cursor のカーソル予測は、従来存在しなかったレベルでの入力支援です。しばしばお節介ですが、わりと適切に次の入力箇所へ導いてくれます。これは従来にない UX(ユーザー体験)で、些細な機能に思えますが長時間のコーディングでは効率に差が出ます。

具体例

例えば、関数を定義し終えた後、本来であれば自分でカーソルを移動して関数を呼び出すコードを書き始める必要がありますが、Cursor のカーソル予測機能が自動で適切な位置に移動してくれます。

従来

# ユーザーが入力した直後の状態(カーソルは関数定義内に残っている)
def greet_user(name): print(f"Hello, {name}") # カーソルがここに残っているとすると…
# ここで自分でカーソルを移動して次の処理を入力する必要がある

カーソル予測

# Cursor のカーソル予測が作動し、
# カーソルを自動で関数定義の外、次にコードを書き始めやすい位置に移動
def greet_user(name): print(f"Hello, {name}")
# ← カーソルがこの行頭に移動し、以下のような提案も表示
greet_user("Alice")

スマートリライト

スマートリライトは、開発者が途中まで入力した不完全なコードや、文法的に誤ったコードを AI が賢く解釈し正しい形に書き換えてくれる機能です。多少雑な入力でも、Cursor が意図を汲んで最適なコードにリライト(書き直し)してくれるため、コーディング初心者でも安心してコードを書くことができます。

プログラミングにおける意味

スマートリライトの意味するところは、AI がプログラマの書こうとしている内容を予測し、正しい構文やより良いコードに自動修正してくれることです。人間にとっての「書きかけのメモ」を、AI がきちんと清書してくれるようなイメージです。これにより、細かなシンタックスミスやうっかりミスを深く気にせずコーディングを続けられます。

従来のプログラミングとの違い

従来のコーディングでは、コードの一部を間違えると警告表示され、その都度自分で修正する必要がありました。高度な IDE でも簡単なタイポ (キーの打ち間違い) を直す程度の補助はありますが、Cursor のように意図を読み取ってコード全体をより良く書き換えてくれる機能はありませんでした。スマートリライトのおかげで、従来はエラー原因を調べて修正に費やしていた時間を削減できます。

具体例

例えば、プログラミング初心者が Python でリストをループするコードを書こうとして、コロンを忘れたり変数名を間違えたりしたとき、その場でコードをより正確な形に整えてくれるのです。

# 誤り: コロンが抜けている・変数名が間違っている
item_list = [0, 1, 2, 3, 4, 5]
for i in range(len(item_lst)) print(item_lst[i])

Cursor 提案後:

# 修正後: コロンを追加し、変数名を正しい item_list に統一
item_list = [0, 1, 2, 3, 4, 5]
for i in range(len(item_list)): print(item_list[i])

コロンの追加
元の for 文には末尾のコロン : が欠けていましたが、AI が検知して自動で補完。

変数名の統一
item_lst のスペルミスを見つけ、正しい item_list に置き換えています。

このように、Cursor のスマートリライトは構文エラーや単純なタイポをまとめて訂正し、即座に動作するコードに整えてくれます。また、余計な半角スペースを削除する提案をしたり、コーディング規約に則った提案もしてくれます。

⌘K / Ctrl+K

⌘K(Mac)、およびCtrl + K(Windows) は、エディタ内でショートカットによって呼び出せる AI コード補助機能です。⌘K は Cursor 独自のホットキーで、これを押すことで AI によるコードの生成や編集、ターミナルコマンド生成といった操作をコード編集中に即座に利用できます。Chat 機能が対話形式のサポートであるのに対し、⌘K 機能はより直接的にエディタやターミナルで AI 補助を得られます。

これは、エディタ内およびターミナルで利用できます。

インライン ⌘K

エディタ上で⌘K(Ctrl+K)を押すことで起動する、コードの生成・編集機能です。何も選択せずに⌘K を押すと、新しいコードを生成するプロンプトが表示され、そこで「○○な関数を作成して」と指示すると AI がコードを書き出します。一方、コードを選択した状態で⌘K を押すと「Edit」モードとなり、「このコードを△△のように変更して」と自然言語で伝えるだけで AI が選択部分を編集してくれます。カーソルの位置によって編集範囲を自動的に拡張してくれます。

CleanShot20250528121416@2x.png

右下の v をクリックすると、選択範囲に対する指示なのか (Edit Selection)、ファイル全体に対する指示なのか (Edit Full FIle) 選べます。
CleanShot20250528121544@2x.png

また、Quick Question はその場で回答を得られます。
CleanShot20250528121828@2x.png

Sent do Chat ではチャットペインにコードを送れます。

コマンドライン ⌘k /Ctrl+k

コマンドライン (ターミナル) でも使えます。ターミナルを選択して⌘K を押します。そのまま実行できるようにはなっていません。回答をコピペしてタミナルに貼り付けて実行します。
CleanShot20250528134732@2x.png

プログラミングにおける意味

⌘K によるコード生成・編集は、開発者が望むコード変更を直接文章で指示し、即座にその結果を得られることを意味します。新規コードの自動生成から既存コードのリファクタリングまで、煩雑な操作なしに実行できます。隣に有能なペアプログラマーがいて「ここはこう書き換えておきましたよ」と助けてくれるような感覚です。

従来のプログラミングとの違い

従来、コードを書き換えるには開発者自らが該当箇所を編集し、文法ミスがないか確認し、影響範囲も考慮して…というステップが必要でした。また、新しいコードを一から書くときも、手作業でタイピングしロジックを構築する必要があります。⌘K 機能では開発者の意図を一文で伝えるだけで AI が即座にコードを書き・書き換えてくれるため、このプロセスが大幅に短縮されます。例えば関数名の一括変更やアルゴリズムの差し替えもワンアクションで完了し、従来の何倍も迅速にコードベースを改良できます。

具体例

既存のコードで変数名 x があまり意味を持たないので、よりわかりやすい名前にしたいとします。その場合、該当コードを選択して⌘K を押し、「変数 x を適切な名前にリネームしてください」と入力します。すると AI がコード中の xuserCount に置き換え、必要なら関連する部分も整合性を保つよう編集してくれます。また、新しく日付をフォーマットする関数が欲しい時は、何も選択せず⌘K を押して「今日の日付を YYYY-MM-DD 形式の文字列で返す関数を実装して」と指示します。即座に AI がその関数のコードを生成し、エディタ上に挿入してくれます。