Cursor的使用
Ctrl + L 打開歷史對話記錄
Tab智能助手
1.單行/多行補全
已有代碼片段:
//需求:寫一個工具類計算數組平均值
public class ArrayUtils {//按tab會完成補全
}
按tab鍵- Cursor 自動生成代碼:
//需求:寫一個工具類計算數組平均值
public class ArrayUtils {//按tab會完成補全public static double calculateAverage(int[] numbers) {if (numbers == null || numbers.length == 0) {throw new IllegalArgumentException("Array is empty");}int sum = 0;for (int num : numbers) {sum += num;}return (double) sum / numbers.length;}
}
2.智能代碼重寫
已有代碼片段:
import java.util.List;
import java.util.Arrays;
import java.util.ArrayList;public class Test {public static void arrayFor() {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> evenNumbers = new ArrayList<>();for (int num : numbers) {if (num % 2 == 0) {evenNumbers.add(num);}}}
}
//在循環上方添加注釋://使用 stream 重構
//光標放在循環代碼塊的任意位置,按Tab鍵
public static void arrayStream() {List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5);List<Integer> evenNumbers = numbers.stream().filter(num -> num % 2 == 0).toList();
}
多行協同優化
Cursor 的 多行協同優化 核心能力:多行代碼,一次性完成 語法升級、結構重組、安全修復.
- 多行數據聯想
int count;//普通變量
String name;//姓名
boolean isValid; //是否有效
double price;//價格
//按tab會繼續聯想變量類型
- 多行批量修改
public static int add(int a,int b){//代碼添加注釋System.out.println("第一次輸出!");System.out.println("第二次輸出");System.out.println("第三次輸出");System.out.println("第四次輸出!");return o;
}
光標位置預測Tab to jump here
//添加注釋
public static int add(int a, int b) {return a + b;
}public static int subtract(int a, int b) {return a - b;
}public static int multiply(int a, int b) {return a * b;
}public static int divide(int a, int b) {if (b != 0) {return a / b;} else {throw new IllegalArgumentException("Division by zero is not allowed.");}
}
public class Test {//添加注釋/*** Adds two integers.** @param a the first integer* @param b the second integer* @return the sum of a and b*/public static int add(int a, int b) {return a + b;}/*** Subtracts the second integer from the first.** @param a the first integer* @param b the second integer* @return the result of a minus b*/public static int subtract(int a, int b) {return a - b;}/*** Multiplies two integers.** @param a the first integer* @param b the second integer* @return the product of a and b*/public static int multiply(int a, int b) {return a * b;}/*** Divides the first integer by the second.** @param a the first integer* @param b the second integer* @return the result of a divided by b* @throws IllegalArgumentException if b is zero*/public static int divide(int a, int b) {if (b != 0) {return a / b;} else {throw new IllegalArgumentException("Division by zero is not allowed.");}}
}
接收、部分接收和拒絕
public class Student {//tab全部接收,esc拒絕接收,ctrl + 右箭頭 部分接收
private String name;
private int age;
private String gender;
}
默認不開啟部分接收
需要在Cursor Settings -> Features -> Partial accepts
Chat對話模式
1.Agent代理陵式(默認):允許Cursor學習和理解我們的項目代碼,并且代表們可以直接進行項目代碼更改!
[ 識別項目結構]
2.Ask對話模式:獲取項目代碼相關的解釋和答案,但是不會直接修改項目代碼![ 識別項目結構]
3.Manual手動模式:需要我們執行項目上下文(修改范圍,后續會詳細講解)重點編輯![ 不識別項目結構]
Ctrl + K 內聯窗口
精準上下文指定
在curser工具,上下文(context) 可理解為讓 AI 準確理解需求輔助編碼的信息參考范圍。
Codebase Indexing 代碼庫檢索
默認情況下,Cursor會自動檢索項目文件。
查看codebase,點擊右上角齒輪,Indexing
忽略文件設置
cursor讀取項目的代碼庫并為其編制索引以支持其功能。可以通過將 .curserignore 文件添加到根目錄來控制哪些文件被忽略和 curser 限制訪問。
- 提升索引速度:排除大型依賴、生成文件(如node_modules、dist)
- 避免干擾:某些配置文件可能包含敏感信息或與當前任務無關
配置.cursorignore文件:
cursor setting -> indexing -> Configure ignored files
Rules規則
rulers 規則可以為生成結果添加規則和限制,讓AI生成的代碼結合團隊規范,減少人工二次修改成本。
- 可約束代碼風格(如強制用駝峰命名、要求函數必須寫注釋)
- 能限定技術選型(如禁止使用某老舊庫、優先用項目指定工具類)
- 提前指定核心參數(如提前設置連接數據庫的地址和賬號密碼等)
配置方案
維度 | 項目規則(Project Rules) | 用戶規則(UserRules) |
---|---|---|
作用范圍 | 僅對當前項目生效,團隊成員共享相同規則 | 對所有項目生效,個人專屬配置 |
存儲位置 | 項目根目錄下的.cursor/rules/ 隨意.mdc 文件 | 用戶配置目錄(如~/.cursor/rules ) |
同步方式 | 隨項目代碼提交到版本庫,團隊共享 | 僅本地生效,不隨項目同步 |
適用場景 | 統一團隊編碼規范(如函數注釋格式、依賴版本) | 個人習慣(如快捷鍵、AI 響應風格) |
如果項目規則和用戶規則同時存在,并且規則沖突,項目規則優先級更高
項目配置規則
-
項目規則配置
項目根目錄下的.cursor/rules/
隨意.mdc
文件
快捷鍵Ctrl + Shift + P > New Cursor Rule -
用戶規則配置
進入Cusor Settings -> Rules -> User Rules
填寫內容
用戶規則不支持mdc語法
mdc語法
MDC(Markdown with Cursor)語法專門為編寫項目規則設計的格式,結合 Markdown的可讀性和元數據配置能力。
組成部分
- 前置元數據(Frontmatter)
- 用
---
包裹的YAML格式配置 - 綜藝規則的基本屬性(如作用范圍、優先級)
- 規則內容(MD正文)
- 用Markdown語法寫具體規則
前置元數據
字段 | 作用 | 示例 |
---|---|---|
description | 描述規則用途,指導 AI 如何應用規則 | “前端組件編碼規范” |
globs | 指定規則生效的文件范圍(支持 glob 語法) | “src/**/*.{js,ts,jsx}” |
priority 規則優先級(數值越大越優先),解決規則沖突 | 1000 | |
version | 規則版本號(可選) | “1.0.0” |
示例:
---
# 官方約定字段(推薦用,AI更易理解)
description: "前端項目規則"
globs: "src/**/*.tsx"
priority: 1000
#自定義字段(白己或團隊約定含義)
author: "技術團隊"
review_date: "2025-06-04"
specia1_ru1e: "僅周一至周五生效"
---
規則內容
用Markdown的標題、列表、代碼塊等語法寫具體規則。
代碼風格規則(最常用)
# 一、代碼風格
1. 函數必須包含 `J`SDoc` 注釋- 至少包含`@param`、`@return`描述
2. 變量名必須使用陀峰命名法。
3. 每行代碼長度不超過120個字符。# 二、技術選型
1. 禁止使用 eval() 函數
2. SQL 查詢必須使用參數化查詢,防止注入攻擊
3. 敏感信息(如api密鑰),必須從環境變量讀取
特殊語法:引用項目文件
用@file
引用項目內的配置文件,讓AI參考
# 工具鏈配置
1. ESL int 規則必須符合 @file .eslintrc.js
2. 測試用例必須遵循Jest框架規范
完整示例
---
description: "Java項目編碼規范"
globs: "src/**/*.java"
priority: 1000
---# 一、命名規范
1. 類名使用大駝峰命名法(如 `UserService`)
2. 方法名、變量使用小駝峰命名法(如 `getUserName`)
3. 常量使用全大寫,單詞間用下劃線分隔(如 `MAX_COUNT`)# 二、代碼格式
1. 統一使用 4 空格縮進
2. 方法體左大括號不換行,右大括號單獨一行
3. 運算符兩側、逗號后要加空格# 三、注釋規范
1. 類注釋使用文檔注釋,說明類的功能
2. 方法注釋說明功能、參數、返回值和異常
3. 關鍵業務邏輯處添加單行注釋# 四、代碼規范
1. 方法不超過 80 行,避免過長方法
2. 避免深層嵌套,最多不超過 3 層
3. 優先使用 JDK 7+ 新特性
@符號
使用@符號,在聊天中引用代碼、文件、文檔和其他上下文的指南
以下是所有可用 @
符號的列表:
@Files
- 引用項目中的特定文件@Folders
- 引用整個文件夾以獲得更廣泛的上下文@Code
- 引用代碼庫中的特定代碼片段或符號@Docs
- 訪問文檔和指南@Git
- 訪問 git 歷史記錄和更改@Past Chats
- 使用匯總的 Composer 會話@Cursor Rules
- 使用光標規則@Web
- 參考外部 Web 資源和文檔@Lint Errors
- 引用 lint 錯誤(僅限 Chat)
使用@Docs來指定文檔
Cursor Settings -> Indexing & Docs
@Web 參考外部資源(相當于聯網搜索)
@Lint Errors 會自動捕獲并提取當前活動文件中的任何linting錯誤和警告的上下文。(僅限Chat)