复制一段代码,按
Ctrl+Shift+Space,在桌面生成一张可置顶、可拖拽的只读代码卡片。配合导航功能,Ctrl+单击方法名即可沿着调用链跳转,用贝塞尔连线保留调用上下文。
- 在 Releases 下载
CodeFloat-v2.0-x64.zip - 解压到任意目录,运行
CodeFloat.exe - 系统托盘出现图标,复制任意代码后按
Ctrl+Shift+Space创建卡片
在 IDE / 浏览器中复制代码 → Ctrl+Shift+Space → 卡片出现在鼠标所在屏幕
下列示例图依据当前 v2.0 的 WPF 布局、主题色、导航线样式和交互状态绘制,展示的功能均可在本仓库代码中找到对应实现。
在父卡片内 Ctrl+单击 方法名后,定义卡片在旁边展开,父代码仍然可见。同一来源使用相同强调色;已解析关系使用实线,当前来源未找到定义时创建橙色待补全卡片。
按 Ctrl+F 搜索当前代码,使用 Enter / F3 和 Shift+Enter 切换匹配项;双击行号可把关键行滚动到视口中央。深浅主题可在托盘 Settings 中切换。
| 功能 | 操作 |
|---|---|
| 创建卡片 | 复制代码 → Ctrl+Shift+Space(全局快捷键,任何应用中都可用) |
| 语法高亮 | 自动识别 Python / C# / JavaScript / JSON / XML / HTML |
| 字体缩放 | Ctrl+滚轮(9–32pt) |
| 聚焦行 | 双击行号 → 高亮并滚动到视口中央 |
| 搜索 | Ctrl+F 打开搜索栏,Enter / F3 下一个,Shift+Enter 上一个 |
| 折叠卡片 | 双击标题栏折叠为标题条,再次双击恢复 |
| 拖拽缩放 | 标题栏拖动移动,边缘 8 方向缩放,最小 280×160px |
| 多卡片 | 同时打开多张卡片,各自的字体/位置/滚动互不影响 |
| 置顶 | 卡片默认置顶,可逐张关闭 |
| 深浅主题 | 右键托盘 → Settings 切换(默认浅色) |
| 功能 | 操作 |
|---|---|
| 跳转到定义 | 按住 Ctrl 单击方法名 → 当前文本中找到定义则创建同色卡片并定位 |
| 待补全卡片 | 定义不在当前文本 → 创建橙色空卡片 → 复制目标代码 → 点击卡片 Ctrl+V 粘贴定位 |
| 导航连线 | 父子卡片间显示贝塞尔曲线,实线=已解析,虚线=待补全,灰色=休眠 |
| 来源颜色 | 每个代码来源分配独立强调色(S1、S2…),卡片左侧 3px 强调条 |
| 键盘导航 | Alt+←→↑↓ 在父/子/兄弟卡片间跳转 |
| 整理卡片 | Shift+拖拽 标题栏整组移动,Ctrl+Shift+W 关闭子树 |
| 恢复卡片 | 关闭子卡片后再 Ctrl+单击 → 恢复原位和滚动状态 |
| 多候选选择 | 同名方法有多个定义时弹出菜单选择 |
| 快捷键 | 作用 |
|---|---|
Ctrl+Shift+Space |
从剪贴板创建卡片 |
| 快捷键 | 作用 |
|---|---|
Ctrl+F |
搜索 |
Ctrl+W |
关闭卡片 |
Ctrl+Shift+W |
关闭卡片及所有后代 |
Ctrl+Shift+C |
复制全部代码 |
Esc |
取消搜索 / 清除聚焦行 |
| 快捷键 | 作用 |
|---|---|
Ctrl+单击 |
跳转到方法定义 |
Alt+← |
回到父卡片 |
Alt+→ |
跳到子卡片 |
Alt+↑ / Alt+↓ |
兄弟卡片间切换 |
Ctrl+V(待补全卡片) |
粘贴目标代码完成关联 |
| 操作 | 作用 |
|---|---|
| 滚轮 | 垂直滚动 |
Shift+滚轮 |
水平滚动 |
Ctrl+滚轮 |
字体缩放 |
| 双击正文 | 选词 |
| 双击行号 | 聚焦行 |
| 双击标题栏 | 折叠/展开 |
| 右键 | 上下文菜单 |
git clone https://github.com/ly-rrrrr/CodeFloat.git
cd CodeFloat
# 构建
dotnet build CodeFloat.sln -c Release
# 测试
dotnet test CodeFloat.sln -c Release
# 运行
dotnet run --project src/CodeFloat.App -c Release
# 发布自包含包
dotnet publish src/CodeFloat.App/CodeFloat.App.csproj `
-c Release -r win-x64 --self-contained true `
-p:PublishSingleFile=true -o ./release依赖: .NET 8.0 SDK x64,Windows 10/11
src/
├── CodeFloat.Core/ 领域模型、导航图、接口定义
├── CodeFloat.Interop/ Win32 P/Invoke、多显示器
├── CodeFloat.Infrastructure/ 剪贴板读取、语言检测、Roslyn符号解析、会话持久化
└── CodeFloat.App/ WPF 界面、卡片窗口、导航覆盖层、系统托盘
tests/
└── CodeFloat.Core.Tests/ 33 个单元测试
技术栈: .NET 8.0 + WPF + AvalonEdit 6.3 + CommunityToolkit.Mvvm 8.4 + Microsoft.CodeAnalysis 5.6
设置文件位于 %LOCALAPPDATA%\CodeFloat\settings.json:
{
"useDarkTheme": false,
"navigationCardsEnabled": true,
"navigationOverlayEnabled": true,
"cSharpRoslynLocatorEnabled": true,
"autoPlacementEnabled": true
}MIT
