JumpProto
在 Go 与 .proto 之间极速双向跳转,支持定义级与元素级精确定位。
从“看定义”到“改完即编译”,在一个面板里完成。
中文说明
为什么选 JumpProto
- 双向导航:
Go -> .proto、.proto -> Go 一键互跳
- 精确到元素:支持
message / enum / service / rpc,并可定位字段和内部元素
- 操作路径短:
F12、Ctrl/Cmd + Click、右键菜单、状态栏、侧边栏都可触发
- 兼容现有工程:基于生成文件头部
// source: path/to/file.proto 自动回溯源码
- 直接集成编译:支持在侧边栏配置并执行
make proto 规则模板
典型使用场景
- 在 Go 与 Proto 之间快速来回追踪定义关系
- 排查字段变更、枚举值和 RPC 接口影响范围
- 多目录 proto 仓库中减少全文搜索与手动切换
30 秒上手
- 在 VS Code 安装
JumpProto
- 打开包含
.pb.go 的 Go 工程
- 配置
protoJump.protoRoots(推荐)
- 将光标放在目标符号上并按
F12
核心功能入口
JumpProto: Go to Proto Definition
JumpProto: Go to Go Usage
JumpProto: Compile Current Proto
- 侧边栏
?:打开 Make Proto 规则说明
配置项
protoJump.protoRoots
.proto 源文件根目录列表(可多个)。
{
"protoJump.protoRoots": [
"/ABSOLUTE/PATH/TO/your/proto_src",
"$HOME/work/shared-proto"
]
}
protoJump.searchInWorkspace
- 类型:
boolean
- 默认:
true
- 说明:当
protoRoots 未命中时,是否继续在当前工作区内搜索
protoJump.makeProtoCommand
- 类型:
string
- 默认:
""(空)
- 说明:用于“编译当前 Proto”的命令模板,运行时会按当前
.proto 上下文替换占位符
快速流程:
- 在侧边栏填写规则并保存
- 点击“测试命令”(dry-run,仅校验模板与 shell 语法)
- 点击“编译当前 Proto”执行真实命令
示例模板:
cd {protoSrcRoot} && make special_proto packagename={protoPackage} filename={protoFileNoExt}
可用占位符:
{workspaceFolder}
{protoSrcRoot}
{protoFile}
{protoFileNoExt}
{protoDir}
{relativeProto}
{relativeProtoNoExt}
{protoPackage}
protoJump.uiLanguage
- 类型:
"zh" | "en"
- 默认:
"en"
- 说明:控制侧边栏与提示消息语言
前置条件
- 项目使用
protoc-gen-go 生成 .pb.go
- 生成文件头部包含:
// source: path/to/file.proto
常见问题
为什么会出现多个定义候选?
启用 gopls 时,VS Code 可能同时给出 .pb.go 与 .proto 候选。选择 .proto 即可。
找不到目标 proto 文件怎么办?
- 检查
protoJump.protoRoots 是否正确
- 检查
.pb.go 中 // source: 路径是否与仓库结构一致
- 检查
protoJump.searchInWorkspace 是否被关闭
English
JumpProto gives you fast, precise, bi-directional navigation between Go and .proto, plus an integrated proto compile flow.
Why JumpProto
- Bi-directional jumps:
Go -> .proto and .proto -> Go
- Element-level precision for
message / enum / service / rpc, fields, and nested symbols
- Multiple entry points:
F12, Ctrl/Cmd + Click, context menu, status bar, sidebar
- Works with generated Go files via
// source: path/to/file.proto
- Built-in compile workflow from sidebar using a command template
Quick Start
- Install
JumpProto from VS Code Marketplace
- Open a Go project with generated
.pb.go files
- Configure
protoJump.protoRoots (recommended)
- Put cursor on a symbol and press
F12
Main Commands
JumpProto: Go to Proto Definition
JumpProto: Go to Go Usage
JumpProto: Compile Current Proto
- Sidebar
?: open Make Proto rule guide
Settings
protoJump.protoRoots
List of source .proto roots.
{
"protoJump.protoRoots": [
"/ABSOLUTE/PATH/TO/your/proto_src",
"$HOME/work/shared-proto"
]
}
protoJump.searchInWorkspace
- Type:
boolean
- Default:
true
- Description: continue searching in workspace when
protoRoots has no match
protoJump.makeProtoCommand
- Type:
string
- Default:
""
- Description: shell template for
Compile Current Proto; placeholders are resolved from active .proto context
Example:
cd {protoSrcRoot} && make special_proto packagename={protoPackage} filename={protoFileNoExt}
Supported placeholders:
{workspaceFolder}
{protoSrcRoot}
{protoFile}
{protoFileNoExt}
{protoDir}
{relativeProto}
{relativeProtoNoExt}
{protoPackage}
protoJump.uiLanguage
- Type:
"zh" | "en"
- Default:
"en"
- Description: language for sidebar and notifications
Requirements
.pb.go is generated by protoc-gen-go
- Generated file header includes:
// source: path/to/file.proto
隐私说明 / Privacy
文档示例统一使用占位路径(如 /ABSOLUTE/PATH/TO/...、$HOME/...),避免暴露个人目录信息。
All path examples use placeholders to avoid exposing personal local directory information.