Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>JumpProtoNew to Visual Studio Code? Get it now.
JumpProto

JumpProto

SivanLiu

|
4 installs
| (0) | Free
在 Go 与 .proto 之间双向跳转,支持字段与内部元素级精确定位。
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

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 秒上手

  1. 在 VS Code 安装 JumpProto
  2. 打开包含 .pb.go 的 Go 工程
  3. 配置 protoJump.protoRoots(推荐)
  4. 将光标放在目标符号上并按 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 上下文替换占位符

快速流程:

  1. 在侧边栏填写规则并保存
  2. 点击“测试命令”(dry-run,仅校验模板与 shell 语法)
  3. 点击“编译当前 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

  1. Install JumpProto from VS Code Marketplace
  2. Open a Go project with generated .pb.go files
  3. Configure protoJump.protoRoots (recommended)
  4. 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.

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft