🙆‍♀️

Cursorの@Symbolsについて調べてみた

に公開

今回はCursorの機能である@Symbolsについて、公式ドキュメントの内容をまとめてみます。

@Symbolsとは?

Cursorにはチャットを利用したコーディングアシスト機能がありますが、その機能についてどのようにコードやファイル、ドキュメントなどのコンテキストを参照するかということを制御するために@Symbolsというものがあります。

https://docs.cursor.com/context/@-symbols/overview

Cmd + Kなどで表示できるチャットボックスでは、一般的には例えば〜の計算をするための関数を実装してのような指示を投げたりするかと思いますが、@Symbolsというものを使えばより複雑なことをすることができます。

@Symbolsの種類

@Symbolsは以下が利用できます。

  • @Files:プロジェクト内の特定のファイルを参照
  • @Folders:より広いコンテキストのためにフォルダを指定できる
  • @Code:特定のコードスニペットやコードベース内のシンボルを参照する
  • @Docs:ドキュメントやガイドへのアクセス
  • @Git:Gitの履歴や変更にアクセスする
  • @Notepads:Notepadsにアクセスする
  • @Past Chats:要約されたコンポーザーセッションを利用する
  • @Cursor Rules:cursor rulesを利用する
  • @Web:Web上の外部リソースやドキュメントを参照する
  • @Link:特定のコードやドキュメントへのリンクを作成する
  • @Recent Changes:直近変更されたコードを参照する
  • @Lint Errors:Lintのエラーを参照する
  • @Definitions:シンボルの定義を参照

実際に使ってみる

いくつかの機能について使ってみようと思います。

@Files

@Filesでは任意のファイルを指定してそのファイルに対してチャットを適用できます。今回は以下のようなサンプルコードを作ってみます。

import json

def open_csv_file(filename):
    with open(filename, "r") as f:
        return f.readlines()

def open_json_file(filename):
    return json.load(open(filename, "r"))

ここで、JSONに関する関数とその行番号を教えてと入力したところ、以下のように望んだ回答が得られました。

@Folders

@Foldersではフォルダを指定することができます。今回、src1src2という二つのフォルダを定義し、以下のようなファイルを定義しました(簡単のため、関数のロジックの実装はしてません)。

ここから、src1/func1.pyに定義されているcalculate_accuracyを探してみたいと思います。以下のようにプロンプトを実行した結果、指定したsrc1src2二つのフォルダの中から対象のファイルを探してくれました。

@Git

ここでは最後のコミットからの変更点について取得してみたいと思います。まずは以下のようにしてサンプルレポジトリを作ります。

mkdir git_symbol_test
cd git_symbol_test
git init
echo "Initial Message" > sample.txt
git add sample.txt && git commit -m "Initialize sample.txt

そしてsample.txtにSecond Messageと入力して前回との差分を検出させると以下のようにまず表示されました。

するとsample.txtで変更があるのでステータスを確認するか聞かれました。確認を依頼すると以下のように表示されました。

次にコミットするかと聞いてくれるのでお願いすると、コミットまでしてくれました。

まとめ

今回はCursorの@Symbols機能について紹介するとともに幾つかの機能を使ってみました。特に大規模プロジェクトになると探したい関数がどこにあるかわからなかったりする場合もあるかなと思うので、そういう時に使うととても便利だと思いました。今回は利用していませんでしたが、Cursor Rulesについては特に別の記事で扱ってみようと思います。

Discussion