Skip to content

代码导航功能

IfAI 提供强大的代码导航功能,帮助您高效理解和浏览代码库。

跳转到定义

直接跳转到符号定义的位置。

键盘快捷键

平台快捷键
MacF12Cmd+点击
Windows/LinuxF12Ctrl+点击

可查找的内容

  • 函数定义
  • 类定义
  • 变量声明
  • 类型定义
  • 接口声明
  • Trait 实现
  • 宏定义

使用示例

// 将光标放在 'formatDate' 上并按 F12
const result = formatDate(new Date());

// 跳转到:
function formatDate(date: Date): string {
  return date.toISOString();
}

跨语言支持

跨语言无缝工作:

// 在 TypeScript 中
import { utils } from './helpers';
utils.formatName();  // F12 → 跳转到 helpers.ts

// 在 Rust 中
use crate::models::User;
let user = User::new();  // F12 → 跳转到 models.rs

// 在 Python 中
from auth import login
login(user)  // F12 → 跳转到 auth.py

查找引用

定位使用符号的所有位置。

键盘快捷键

Shift+F12(所有平台)

引用类型

IfAI 对引用进行分类:

类型图标描述
读取👁️符号被读取/使用
写入✏️符号被修改
定义📍符号定义位置

引用面板

┌─────────────────────────────────────────────────────────┐
│  'User' 的引用(找到 12 处)                              │
├─────────────────────────────────────────────────────────┤
│  📍 models/user.ts         - 第 15 行  [export class User]│
│  👁️ auth/login.ts         - 第 23 行  [User user]        │
│  ✏️ auth/login.ts         - 第 45 行  [user.name = ...]  │
│  👁️ components/UserCard.tsx - 第 8 行 [import { User }]  │
│  ✏️ services/user.service.ts - 第 67 行 [user.update()]  │
└─────────────────────────────────────────────────────────┘

使用场景

了解影响

重命名函数之前,查找所有引用以确保
不会破坏任何内容。

安全重构

在进行更改之前查看哪些文件依赖于类。

调试依赖关系

追踪值在何处被意外修改。

符号搜索

在整个项目中搜索符号。

键盘快捷键

Cmd+Shift+O(Mac)或 Ctrl+Shift+O(Windows/Linux)

搜索过滤器

前缀搜索
@符号(函数、类、变量)
#标签
:按语言

搜索示例

@User          → 查找 User 类、User 接口、user 变量
@login         → 查找 login 函数、login 组件
:typescript    → 仅搜索 TypeScript 文件

符号索引

IfAI 自动为您的代码建立索引以实现快速导航。

支持的语言

IfAI 支持 35+ 种编程语言:

类别语言
WebJavaScript、TypeScript、HTML、CSS、JSX、TSX
后端Python、Go、Java、C#、PHP、Ruby
系统Rust、C、C++、Swift、Kotlin
脚本Lua、Perl、Shell、PowerShell
数据SQL、R、Julia
配置YAML、TOML、JSON、XML

索引状态

在状态栏中检查索引进度:

索引中:234 个文件(100%)| 已索引 15,432 个符号

重新索引

强制重新索引:

Cmd+Shift+P > "IfAI: 重新索引项目"

面包屑导航

使用面包屑跟踪您的导航路径。

src > components > auth > Login.tsx

点击任何面包屑跳回。

工作原理

Tree-Sitter 解析

IfAI 使用 Tree-sitter 进行准确解析:

  • 快速增量解析
  • 容错(适用于不完整的代码)
  • 语言无关的 API

跨文件分析

跨文件的符号关系:

// auth.ts
export function login() { ... }

// main.ts
import { login } from './auth';
login();  // ← 知道这来自 auth.ts

缓存

索引的符号被缓存以获得即时结果:

  • 项目缓存在会话之间持久化
  • 文件更改时的增量更新
  • 编辑时的自动失效

技巧和窍门

快速导航

  1. Cmd+点击:跳转到定义
  2. Cmd+Shift+点击:查看定义(内联预览)
  3. F12:跳转到定义
  4. Shift+F12:查找引用

多光标导航

  • Alt+点击:在每次点击处添加光标
  • Cmd+D:选择符号的下一个出现位置
  • Cmd+Shift+L:选择所有出现位置

仅键盘导航

操作快捷键
显示所有符号Cmd+Shift+O
跳转到行Ctrl+G
跳转到文件Cmd+P
后退Ctrl+-
前进Ctrl+Shift+-

性能

对于大型代码库,IfAI 优化导航:

  • 延迟加载:按需索引文件
  • 增量索引:仅扫描更改的文件
  • 智能缓存:在内存中缓存热点符号

故障排查

"未找到符号"

解决方案

  1. 等待索引完成
  2. 检查语言是否支持
  3. 确保文件没有语法错误
  4. 重新索引项目

索引缓慢

解决方案

  1. 排除大型/生成的目录
  2. 减少索引范围
  3. 检查可用内存

引用过时

解决方案

  1. 清除符号缓存
  2. 重新索引项目
  3. 重启 IfAI

学习笔记

代码导航学习笔记

下一步

基于 MIT 许可发布