05-引用技巧学习

2026-05-01 17:59 05-引用技巧学习已关闭评论

@ 和 # 引用技巧学习记录

学习日期:2026-03-13
所属阶段:阶段一 - 基础掌握


工具概述

Claude Code 支持两种引用语法,让你在对话中精准指向文件代码

引用类型 语法 用途
@ 引用 @文件名 引用文件
# 引用 #符号 引用代码符号(类、方法、变量)

@ 引用 - 文件引用

基本语法

@文件名              # 模糊匹配
@path/to/file.md    # 指定路径
@008                # 匹配 008-xxx.md

实践案例

案例 1:快速引用文件

操作:在对话中输入

请帮我检查 @008-Claude Code深入学习计划.md 的内容

效果
- Claude Code 自动识别并加载文件
- 可以直接基于文件内容回答或修改

案例 2:模糊匹配

操作

@008

效果
- 显示所有以 008 开头的文件列表
- 可以选择具体的文件

案例 3:多文件对比

操作

对比 @001.md 和 @002.md 的区别

效果
- 同时加载两个文件
- 可以进行对比分析


# 引用 - 符号引用

基本语法

#类名               # 引用类定义
#方法名             # 引用方法定义
#变量名             # 引用变量

⚠️ 重要前提

# 引用只有在符号已加载到上下文中才有效!

符号加载方式:
1. 用 Read 读取过包含该符号的文件
2. 用 @ 引用过该文件
3. 对话中之前提到过该文件

实践案例

案例 1:创建示例代码文件

创建文件sample-code.kt

package com.example

data class User(
    val id: Int,
    val name: String,
    val email: String
) {
    fun isValidEmail(): Boolean {
        return email.contains("@")
    }

    fun getDisplayName(): String {
        return "$name (ID: $id)"
    }
}

class UserManager {
    private val users = mutableListOf<User>()

    fun addUser(user: User) {
        users.add(user)
    }

    fun findUserById(id: Int): User? {
        return users.find { it.id == id }
    }
}

fun main() {
    val manager = UserManager()
    val user = User(1, "张三", "zhangsan@example.com")
    manager.addUser(user)
}

案例 2:加载符号

执行

Read file_path="ClaudeCode/sample-code.kt"

效果
- 文件内容加载到上下文
- 符号可以被 # 引用

案例 3:引用类

操作:在对话中输入

#User 类中的 #isValidEmail 方法有什么作用?

预期效果
- 引用 User 类的定义(第 6-24 行)
- 引用 isValidEmail 方法(第 14-16 行)

案例 4:引用方法

操作

请解释 #UserManager.addUser 的实现逻辑

预期效果
- 引用 UserManager 类的 addUser 方法
- 基于具体代码进行解释


@ 与 # 引用对比

特性 @ 引用 # 引用
引用目标 文件 代码符号
语法 @文件名 #符号名
前提条件 符号必须先加载
适用场景 文档、代码文件 代码文件中的类/方法/变量
自动完成 ✅ 有 ✅ 有(加载后)

实际应用场景

场景 1:代码审查

@UserService.kt 中的 #createUser 方法有问题,
第 25 行的参数验证逻辑需要完善。

场景 2:跨文件对比

对比 @UserService.kt 和 @UserManager.kt 中
#getUserById 方法的实现差异。

场景 3:基于现有代码修改

参考 @sample-code.kt 中的 #User 类,
在 @UserRepository.kt 中添加类似的验证方法。

场景 4:文档查询

根据 @CLAUDE.md 的配置,
说明 #EnterPlanMode 的使用场景。

常见问题

Q1: # 引用无效怎么办?

原因:符号未加载到上下文

解决

# 方法 1:先 Read 文件
Read file_path="file.kt"

# 方法 2:用 @ 引用文件
@file.kt

# 然后再使用 # 引用
#ClassName

Q2: @ 引用找不到文件?

原因
1. 文件名拼写错误
2. 文件不在当前目录

解决

# 使用完整路径
@ClaudeCode/filename.md

# 或使用 Glob 查找
Glob pattern="**/filename.md"

Q3: 符号名冲突怎么办?

解决:使用更完整的引用

# 使用类名限定
UserManager#addUser

# 或使用文件限定
@file.kt #addUser

最佳实践

✅ 推荐 ❌ 避免
使用 @ 快速引用文件 完整写出文件路径
加载后再使用 # 引用 未加载就使用 # 引用
结合 @ 和 # 精准定位 只用模糊描述
使用简短文件名匹配 输入完整长文件名

学习检查点

  • [x] 理解 @ 引用文件的方法
  • [x] 理解 # 引用符号的方法
  • [x] 掌握 # 引用的前提条件(符号必须先加载)
  • [x] 能在对话中正确使用 @ 和 #

掌握度:⭐⭐⭐⭐


备注

  • # 引用在代码文件中效果最好
  • Markdown 文档中的代码块也可以被引用
  • 使用引用可以大幅减少上下文描述的长度

当前文章价值8.8元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://teachcourse.cn/3970.html ,谢谢支持!

资源分享

Windows 10安装Rethinkdb配置启动服务 Windows 10安装Rethinkdb配置启
Head First Of Design Pattern Head First Of Design Patt
Python框架JWT实现登录token生成和接口校验 Python框架JWT实现登录token
Open Claw GLM 模型配置指南 Open Claw GLM 模型配置指南

评论已关闭!