IDE PLUGIN · IntelliJ 平台全家桶 · 市场免费

代码看到一半,按 F3 存一个

在编辑器里任意位置按 F3(或右键第一项「添加sjz书签」)就地存下一个书签, 右侧工具窗口是一棵可分组、可拖拽的书签树,单击就跳回去。 书签全部落在本机一个 SQLite 文件里(~/bookmark_v2.db),不依赖任何服务。 在 Java 文件里它还会记住「这个书签属于哪个方法」——代码上下挪动、git pull 之后, 书签会按「方法首行 + 偏移」自己跟回去,而不是傻等在原来那个行号上。

极速定位

F3 就地存,树里单击就跳回那一行;加过书签的行,行尾直接把书签名画出来。

书签跟着方法走

Java 文件记「类 + 方法 + 参数 + 偏移」,git pull 或切分支之后自己归位,不是死守行号。

数据在你自己机器上

一个 SQLite 文件装下全部书签,可导出 JSON、可定时自动备份,不需要账号、不需要联网。

⌨️ F3 就地存 🌲 右侧书签树 🎯 书签跟着方法走 💾 本地 SQLite 🧩 IntelliJ 全家桶通吃
当前版本 5.0.2 插件市场 免费 最低 IDE 2024.2 数据存放 本机 SQLite 源码 11175 行 Java
🧩 在 IDE 里就能装:Settings → Plugins → Marketplace,搜 shijinze 或 Bookmark-Shijinze,点 Install 再重启就好,不要钱、不需要激活码。 也可以点下面那颗按钮先去市场页看一眼。

为什么再写一个书签插件

Why

IDE 自带的书签能用,只是到了「几十个书签 + 一份天天在动的代码」这个量级上就有点吃力。 下面这张表只列本插件有、自带确实没有的几件事,口径是 IntelliJ IDEA 2024.2 自带的 Bookmarks。

功能对比
IDE 自带书签
Bookmark-Shijinze
📁 多级分组按模块 / 功能把书签收起来
▫️只有单层的书签列表,列表之间不能再嵌套
✅多级目录,节点可拖拽排序、拖进拖出
🏷️ 行尾显示书签名不切窗口就知道这行为什么被标
▫️装订线上一个图标,名字要去工具窗看
✅书签名直接画在那一行行尾(超 40 字截断)
🎯 代码挪动之后git pull / 切分支 / 别人插了 20 行
▫️按行号,文件被外部改动后容易偏
✅Java 文件按「方法首行 + 偏移」重新落位
📤 导出 / 导入换机器、给同事、留一份存档
▫️没有导出入口
✅整棵树或某个子树导成 JSON,导入自动判重合并
🗄️ 数据存在哪重装 IDE / 清配置之后还在不在
▫️跟着 IDE 的项目配置走
✅家目录里一个独立 SQLite 文件,另有定时备份
🔗 两个项目共用一份书签同一份代码开了两个目录 / 两个窗口
▫️书签跟着各自的项目
✅设置里把项目指到另一个项目 id 即可

⚠ 说明白一点:最后那行的「共用一份书签」是同一台机器上两个项目读同一个本地库, 不是云同步、也不是团队共享——这个插件没有服务端,也不上传任何书签内容。

当初为什么要自己写一个

  • •书签一多就是一长条,没法按模块收进目录,找起来还不如全局搜。
  • •行号是最不稳的东西:同事在你上面加了 20 行,书签集体错位。
  • •书签跟着 IDE 的项目配置走,重装 / 清配置 / 换台机器就得重来。
  • •想把书签导出来存一份或者搬到另一台电脑上,没有现成的口子。
  • •同一份代码开了两个目录,两边书签各存各的,得手工维护两套。

这插件是怎么解的

  • ✓多级书签树:建目录、拖拽排序、拖进别的目录,松手即落库。
  • ✓方法锚点:Java 文件记住方法与偏移,重载方法也分得清,代码挪了自己归位。
  • ✓独立的库文件:~/bookmark_v2.db,不在 IDE 的插件目录里,重装 IDE 不受影响。
  • ✓JSON 导出导入:整棵树或一个子树都行,导入按「名称 / 文件 + 行号」判重合并。
  • ✓项目管理表:把当前项目指到另一个项目 id,两个目录读同一份书签。

装上就能用,不用配置任何东西

插件市场里搜 Bookmark-Shijinze,免费;装完右侧会多一条「史锦泽的书签」。

先看 4 分钟

Watch first

一段从头到尾的实机录屏:建目录、加书签、跳转、搜索、拖拽排序,都在里面。下面的图解教程是把它拆成一步一图。

3 分 54 秒 1280×868 · 6.4 MB · 没有声音(原片就没有音轨)· 点了才开始加载,不点不下载。 片子是早前录的:里面书签面板底部那排「刷新 / 使用教程 / 下一个(F3)」按钮,当前版本已经收进工具窗标题栏(搜索框 + 刷新 + 设置),操作本身没变。

图解教程

Step by step · 7

从「在市场里搜到它」到「搜索书签」,七步。点图可以放大看。截图都是在 macOS 上截的,Windows / Linux 下位置一样。

01

在插件市场里装

Settings → Plugins → Marketplace,搜索框里敲 shijinze (或者整名 Bookmark-Shijinze),结果里那条作者写着「史锦泽」的就是。 点 Install,装完按提示重启 IDE。免费,不需要激活码、也不需要机器码。

搜 shijinze Marketplace 页签 免费
macOS IDEA 设置窗口的 Plugins 页,Marketplace 搜索框里输入 shijinze,结果只有一条 Bookmark-Shijinze,右侧是插件详情与安装按钮

左边红框是设置里的 Plugins 那一项,右边是搜到的插件详情。 图里显示的版本是 3.1.5,那是截图当时的版本 —— 现在市场上的最新版是 5.0.2; 按钮显示 Disable 是因为截图那台机器已经装过了,你第一次看到的会是 Install。

02

装完之后,面板在右边

重启后 IDE 右侧边栏会多出一个书签图标,点开就是「史锦泽的书签」。 要是右边没看到,就从左下角的工具窗口列表里找 shijinze-bookmark(图里红框那个菜单)。 面板本身是三段:最上面搜索框,中间一棵书签树,节点前面挂着红旗 / 三角 / 文件夹图标。

默认停在右侧 独占侧栏,不和别的工具窗挤
macOS IDEA 整窗截图,右侧是书签工具窗口,红框和红色箭头指出侧边栏上的书签图标,左侧弹出的工具窗口列表里也能找到它

红字写的是「如果右侧没有,则在左侧的插件列表中找到 shijinze-bookmark」, 右下角那个放大的小图标就是它在侧边栏上的样子。 图里面板底部那排「刷新 / 使用教程 / 下一个(F3)」按钮是老版本的, 当前版本这三件事已经收进工具窗标题栏(搜索框 + 刷新 + 设置齿轮)。

03

先建几个目录,把书签分开放

在书签树里右键任意一个目录(或者树的空白处),菜单里第一项就是 「添加书签目录」;同一个菜单里还有删除节点、重命名、展开节点、折叠节点。 目录可以一层套一层,也可以整个拖到别的目录下面 —— 这是它和「单层书签列表」最直接的差别。

多级目录 右键即建 可拖拽移动
macOS 书签树上右键弹出菜单,菜单项依次是添加书签目录、删除节点、重命名、展开节点、折叠节点,红色箭头指向这个菜单

红字写着「在目录中右键添加目录」。这张图里的菜单是精简版; 当前版本点在节点上是完整菜单(10 项,多出修改行号、设置父书签、导出此节点、 导出全部书签、从文件导入等),点在空白处是 5 项。

04

在任意代码处存一个书签

光标停在想标记的那一行,右键 → 菜单第一项「添加sjz书签」,或者直接按 F3。 弹出的对话框四行:文件(只读)、行号(可改)、添加到哪个目录(只读)、名称 —— 名称默认就是当前这行代码,多数时候直接回车。 同一位置再按一次 F3,对话框会变成「更新书签」,底下是取消 / 删除书签 / 更新书签三颗按钮。

F3 右键第一项 增改删同一个快捷键
macOS 编辑器里右键弹出的上下文菜单,最上面一项是带书签图标的「添加sjz书签」,右侧是书签树

红字写着「在任意代码处右键添加书签」,菜单最上面那条带小红旗的就是。 右边那棵树里,红旗是叶子书签、文件夹是目录 —— 存完之后这一行的行尾还会用淡紫色粗体把书签名写出来。

05

点一下,跳回那行代码

在书签树里单击书签的文字就跳到对应文件的那一行;点图标是展开 / 折叠, 双击文字也是展开 / 折叠,点空白处清空选中 —— 分得很清楚,不会误触。 书签指向的文件不在当前项目里时,跳之前会先问一句要不要在当前窗口打开。

单击文字 = 跳转 点图标 = 折叠展开 跨项目会先确认
macOS 书签树里一条书签被选中高亮,红色箭头从代码区指向它,编辑器光标停在对应的那一行

⚠ 图上的红字写的是「双击书签任意位置即可跳转」,那是老版本的说法: 当前版本单击文字就跳,双击留给了展开 / 折叠。截图里的效果是一样的 —— 左边编辑器已经定位到书签所在的那一行。

06

书签多了就搜

面板顶上的搜索框(占位字是「搜索书签」)里随便敲个关键字,整棵树会自动展开、 命中的部分红色加粗标出来。只按书签名称匹配,不匹配文件路径; Esc 清空,F3 跳到下一个匹配项。 ⚠ 这个 F3 是搜索框自己的按键处理,和「添加书签」的全局 F3 不是一回事。

红色高亮 Esc 清空 F3 下一个
macOS 书签面板顶部搜索框里输入了「不允许」三个字,下面的书签树自动展开,命中的书签名里关键字被标成红色

红字写着「任意关键字搜索」。图里搜的是「不允许」, 两条命中的书签名里那三个字被单独染红,其余节点照样留在树上不动。

07

齿轮进设置:项目管理与自动备份

面板标题栏右边那颗齿轮直接进插件设置(也可以走 IDE 的 Settings → Bookmark-Shijinze)。 里面只有两个页签:项目管理(一张表:项目名称 / 别名 / 项目 id / 书签数 / 当前同步至, 可软删除、可恢复、可导出导入、有一颗「插件信息」把库位置和统计全摊开)和 自动备份(默认关着,开了按天 + 整点在后台跑)。

项目管理 自动备份 插件信息一键复制
macOS 书签面板整体截图,顶部是搜索框,红色箭头指向标题栏右上角的设置齿轮图标,下面是分了几层目录的书签树

红色箭头指的就是齿轮。顺带解释一下树最上面那行 项目名(远程同步id:6c022897):那串 id 是本机项目的标识, 用来在设置里把两个项目指到同一份书签上,和云同步没有任何关系(这个插件没有服务端)。

不是只有 IDEA 能装,整个 IntelliJ 全家桶都能装

Everywhere

名字里带着 IDEA,是因为它最早为 IDEA 写的;但它依赖的是 IntelliJ 平台本身,不是 Java 那套。 所以凡是基于 IntelliJ 平台的 IDE 都能装。下面 12 格里,前 11 格是 JetBrains 家基于该平台的 IDE, 最后一格 Android Studio 是 Google 基于 IntelliJ IDEA 社区版做的,同样能装; 浅底那三格是自带 Java 支持、因而「方法锚点」也能生效的;其余的照样能用,只是方法锚点那一层退掉,退回纯行号书签。

IntelliJ IDEA CommunityJava · 方法锚点可用 IntelliJ IDEA UltimateJava · 方法锚点可用 PyCharmPython WebStorm前端 / TypeScript GoLandGo PhpStormPHP RubyMineRuby CLionC / C++ Rider.NET / C# DataGripSQL / 数据库 RustRoverRust Android StudioAndroid · 方法锚点可用
依据:它依赖的是平台模块
plugin.xml 里写的是 <depends>com.intellij.modules.platform</depends>—— 平台模块,每个基于 IntelliJ 平台的 IDE 都有。 如果这里写的是 com.intellij.java,那才叫「只有装了 Java 插件的 IDE 能用」。
Java 能力是「可选依赖」
另有一行 <depends optional="true" config-file="bookmark-java.xml">com.intellij.java</depends>, 源码注释原文是「仅在带 Java 的 IDE 中加载,缺失时书签退回普通行号逻辑」。 而 bookmark-java.xml 里一个扩展点都没注册,方法锚点纯靠运行期 API 调用实现。
退化是「一次性熔断」,不是每次报错
全工程只有一个类(JavaMethodResolver)引用了 Java PSI; 外面统一由 MethodAnchorSupport 包一层 try / catch(Throwable), 一旦捕获到(IDE 里没有 Java 插件 → 链接失败)就把 unavailable 置位, 此后所有调用直接返回 null,不会反复抛链接错误、也不会刷日志。
退掉之后还剩什么
书签照样能建、能跳、能分组、能导出导入、行号照样跟着编辑走, 只是不再记录方法锚点(日志里会写一句「未解析到所属方法(回退普通行号)」)。 补一句实话:就算在 IDEA 里,方法锚点也只对 .java 文件生效, 同一个项目里的 xml / yml / js 文件同样是纯行号书签;索引还没建完(dumb 模式)时也会跳过。
📐 版本范围:最低 build 242,也就是 IDEA 2024.2 起。 兼容上限有两个口径,如实并列:源码里没设上限(构建脚本把 untilBuild 显式设成了 null,注释写着「对 2026.2(build 262)及以后所有版本开放」), 而市场上那条记录写的范围是 242.0–252.*。 所以如果哪天 IDE 升得太新、市场提示不兼容,可以走下面的第二条路自己构建一份装上。

一眼看懂

At a glance

不想往下翻的话,这六条就是它和「IDE 自带书签」最不一样的地方。

F3 存,再按一次就是改

右键菜单第一项「添加sjz书签」,快捷键 F3。同一位置已经有书签时,它自动变成「更新书签」对话框——改名称、改行号,或者直接删掉。

右侧一棵树,能分组能拖

工具窗口停靠在右侧,侧边栏上写的是「史锦泽的书签」。可以建目录分组、拖拽排序与移动,单击跳代码、双击折叠展开。

书签名直接写在那一行行尾

加过书签的行,行尾会用淡紫色粗体把书签名渲染出来(超过 40 个字符截断)。不用切到工具窗口就知道这行当初为什么被标。

书签跟着方法走,不跟着行号走

Java 文件里会记下「类 + 方法名 + 参数类型 + 相对方法首行的偏移」。git pull、切分支、别人在上面加了 20 行之后,书签按方法首行 + 偏移重新落位。

数据在你自己机器上

一个 SQLite 文件 ~/bookmark_v2.db(WAL 模式、连接池大小 1),没有必须登录的账号、没有必须连上的服务器。

导得出、备得上

整个项目或某一棵子树导成 JSON,导入时按规则判重合并;另有 SQLite 自动备份(默认关着,开了就按天 + 整点在后台自己跑)。

功能,一条一条来

Features

下面全是已经写好、每天在用的功能,没有「即将支持」。按用途分成六组,点标签可以直接跳。 上面图解教程里那七步是最常用的一小半,这里是完整清单。

存与跳

4 项
添加书签:F3 或右键第一项
动作挂在编辑器右键菜单的第一位,文字是「添加sjz书签」,默认快捷键 F3。 弹出的对话框四行:文件(只读)、行号(可改,从 1 开始数)、 添加到(只读,显示要落进哪个目录,落在根上就写「(顶层)」)、名称。 名称默认取当前这行代码的内容,那行是空的就写「未命名」——多数时候直接回车就行。
同一位置再按一次 = 更新书签
按下 F3 时会先用「相对路径 + 行号」查一遍,命中已有书签就换成「更新书签」对话框, 底下三颗按钮:取消 / 删除书签 / 更新书签。 也就是说增、改、删共用一个快捷键,不用去记第二个。
行尾渲染书签名
通过 IDE 的 editor.linePainter 扩展点,在书签所在行的行尾直接画出书签名, 颜色 #9999FF、粗体;文本超过 40 个字符会截断成省略号。 它是画上去的、不是插进文件的,不影响文件内容。
diff 视图里「定位到源文件」
看代码差异时经常想跳回真正的源文件。这条动作挂在 diff 的两个右键菜单里, 点一下:取当前光标所在行号 → 打开对应源文件 → 光标移过去并滚到屏幕中间。 另外,书签指向的文件不在当前项目里时,跳转前会先弹一个确认框问你是否仍要在当前窗口打开。

书签树

6 项
点哪儿是什么,分得很清楚
点图标=展开/折叠,点文字单击=跳到那行代码、双击=展开/折叠,点空白处=清空选中。 节点可以直接拖拽排序或移动到别的目录下,松手即落库。
右键菜单:命中节点 10 项,空白 5 项
点在节点上是完整菜单:添加书签目录、删除节点、重命名、修改行号、设置父书签、 展开节点、折叠节点、导出此节点、导出全部书签、从文件导入到当前位置。 点在空白处是精简菜单:在根目录下添加书签目录、全部展开、全部折叠、导出全部书签、从文件导入到根目录。
图标是代码画的,不是贴图
叶子书签是红色小旗、底下还挂着子级的书签是红色三角、 装着东西的目录是金黄色、空目录是灰色虚线轮廓。 有子级的节点,文字尾部还会自动跟上 ▾ / ▸ 和子级数量,不展开也知道里面有几条。
标题栏常驻三个控件
工具窗口的标题栏上固定挂着搜索框、刷新、设置三个控件—— 不用为了搜一下或者改个配置去别处翻菜单,齿轮直接进插件的设置页。 (图解教程里那些图的面板底部还有一排按钮,那是老版本的位置。)
搜索:过滤 + 红色高亮
标题栏那个搜索框占位字是「搜索书签」。 它只按书签名称匹配(不匹配文件路径),命中后整棵树自动全展开、关键词红色加粗标出来; Esc 清空、F3 跳到下一个匹配项。 ⚠ 这个 F3 是搜索框自己的按键处理,和上面「添加书签」的全局 F3 不是一回事。
独占侧栏
点书签工具窗口的侧边图标时,会把同一侧其它工具窗关掉; 反过来点同侧别的工具窗,书签窗也会让位。IDE 右侧那一条窄地方就不会挤成一团。

方法锚点

6 项 · 仅 Java 文件

行号是最不稳的东西——同事在你上面加了 20 行,你所有书签就全错位了。 这一组就是为了解决它。前提说清楚:只在装了 Java 插件的 IDE 里、且只对 .java 文件生效, 其余情况整块跳过,书签退回纯行号(其它功能一点不受影响)。

记的是四个字段,不是一个行号
每条书签额外存方法所属类全限定名、方法名、参数类型、相对方法首行的偏移四项。 参数类型逗号拼接,专为区分重载方法——三个同名的 save() 不会互相认错。
跳转时行号飘了,就跳方法定义首行
点书签跳过去之前会先判断:记下的行号是否还落在那个方法体里。 已经不在了(方法被大改、上面插了很多代码),就直接跳到方法定义的第一行, 而不是把你扔到一个完全无关的位置。
git pull / 切分支之后自动归位
插件订阅了「文件被外部改动后重新加载」的事件。重载后只要还能找到那个方法, 就无条件按「方法首行 + 当初的偏移」把书签重新放回去。 有个细节刻意排除掉了:方法收尾那一行右花括号不作为落点,免得书签一路被推到方法末尾。
签名被改了也能兜住 · 老书签自动补锚
匹配分两级:先按「类#方法名(参数类型)」精确查,查不到再退化成「类#方法名」取首个同名方法, 所以改个参数类型不会让书签直接失联。 另外,早年存的、根本没有方法信息的老书签,只要当前行落在某个方法里,会被自动反查并回写补上锚点。
正常打字时行号也跟着走
不用等到 git 操作:日常编辑时用 IDE 的 RangeMarker 跟踪每条书签的位置, 写库做 300 毫秒防抖 + 批量提交(不是敲一个字写一次库); 编辑触发的重新锚定另有一层 700 毫秒防抖,连续输入时只在停顿之后跑一次。
什么时候它不生效
三种情况整块跳过、书签退回纯行号:① IDE 里没有 Java 插件(PyCharm、GoLand 这些); ② 文件不是 .java(同一个项目里的 xml / yml / js 也一样); ③ IDE 还在建索引(dumb 模式)。跳过就是安安静静地不做,不弹窗、不报错。

导出导入与备份

4 项
JSON 导出:整个项目或一棵子树
右键菜单里「导出全部书签」和「导出此节点」分别对应这两种范围。 默认导出到 ~/Bookmark-Shijinze-Export, 文件名形如 bookmarks-项目名-yyyyMMdd-HHmmss.json。
导入判重:合并,不是覆盖
导入到某个节点下时:目录按「名称 + 是否目录」判重,重名目录合并而不是再建一个; 书签条目再按「项目 + 文件路径 + 行号」全局判重, 同名的、或者同一文件同一行已经有的,跳过。反复导入同一份文件不会越导越多。
SQLite 自动备份(默认关着)
设置里可开:间隔天数(默认 3 天)、每天几点(默认 3 点)、 格式(.db 文件副本 / .sql 脚本)、保留份数(默认 10)、 备份目录(默认 ~/Bookmark-Shijinze-Backup)。 .db 走 SQLite 的 VACUUM INTO 出一份一致的副本(兼容 WAL,可直接替换还原), .sql 则导出建表语句加全量 INSERT。
错过了点也会补做,且只删自己的文件
后台每 30 分钟检查一次;到点那会儿 IDE 没开着的话,超期一天后的任意时刻补做一次, 并且只有备份成功才推进时间戳(失败下次还会再试)。 清理旧备份时只匹配 bookmark_v2-时间戳.db|.sql 这个名字模式, 绝不动备份目录里其它文件——万一你把目录设成了别的常用文件夹也不会误删。

设置与多项目

4 项
设置页在哪、长什么样
IDE 的 Settings 里叫 Bookmark-Shijinze,也可以点工具窗口标题栏的齿轮直接进。 里面就两个页签:项目管理和自动备份。
项目管理是一张表
列是:项目名称 / 别名 / 项目 id / 书签数 / 当前同步至。 下面一排按钮:删除、已删除项目、刷新、插件信息、导出全部、导入书签、只看有书签的。 删除是软删除——进「已删除项目」还能恢复,也可以在那里彻底删掉。
「同步至另一个项目」是什么意思
先说清楚它不是云同步:这里的同步指的是本机库里两个项目共用同一份书签—— 把当前项目指向另一个项目 id(复制粘贴 id 即可),在表格「当前同步至」那一列切换。 典型场景是同一份代码在本地开了两个目录 / 两个 IDE 窗口,不想维护两套书签。
「插件信息」把家底都摊开
一个对话框汇总:插件名 / 版本 / 作者,SQLite 库的位置、大小、最后修改时间, 项目与书签统计(含目录数、已删除数),当前项目信息,以及运行环境(IDE / 操作系统 / Java)。 底下三颗按钮:打开数据库目录、复制路径、复制全部信息——出问题时截图或贴文本都很快。

数据与存储

4 项
一个文件装下全部书签
库文件固定在用户家目录:~/bookmark_v2.db,表名就叫 bookmark。 它不在 IDE 的插件目录里,也就不会因为重装插件、换 IDE 版本而跟着没了。
连接方式:单连接 + WAL
连接池是 HikariCP,池大小固定为 1;SQLite 开 WAL 模式,读写不互相堵。 ORM 用 MyBatis-Plus——和这个仓库里其它 Java 项目是同一套写法。
纯本地,不需要联网
没有账号、没有服务端、没有必须连上的地址,断网照用。 如实说一句:写入记录时会附带取一次 IP 归属地写进那条记录,属于顺手记的元信息, 既不是云同步、也不上传书签内容——列在这里是为了别让你以为「零网络请求」。
换机器怎么搬
三条路,挑顺手的:直接把 ~/bookmark_v2.db 拷到新机器同一位置; 或者用 JSON 导出全部书签再在新机器上导入(导入自带判重合并); 或者提前打开自动备份,从备份目录里拿一份 .db 副本还原。

装上它之后,日子有什么不同

Benefits

八句大白话,说完就完了。

少在项目里"找"
关键位置随手 F3 存一条,回头单击就到,不用再靠「全局搜一个自己起的注释关键词」这种笨办法。
书签不再是一长条
建目录按模块 / 按需求分开放,能拖能排;有子级的节点后面还跟着数量,不展开也知道里面有几条。
代码动了,书签自己跟上
Java 文件按方法锚点重新落位;其它文件也有 RangeMarker 跟着日常编辑走,不是一改就全错。
数据不容易丢
库文件在家目录、不在 IDE 里;再加上 JSON 导出与自动备份(VACUUM INTO 出一致副本), 重装 IDE、换机器都能接得上。
免费,也不需要激活
JetBrains 市场上的定价模型就是 FREE;源码里没有任何 license / 机器码 / 激活码校验, 装上直接用。(早年那版宣传页上的「10 元永久」已经不存在了。)
轻,几乎感觉不到
没有后台服务、没有轮询;写库做 300 毫秒防抖批量提交,重新锚定另有 700 毫秒防抖, 连续打字时只在停顿之后跑一次。
一套习惯,全家桶通用
PyCharm、GoLand、WebStorm、Android Studio 都能装,操作完全一样; 只有「方法锚点」这一层会在没有 Java 的 IDE 里安静退掉。
出问题好排查
设置里那颗「插件信息」把版本、库位置与大小、书签统计、IDE / 系统 / Java 版本全列出来, 一键复制全部信息,贴给我就行。

常见问题

FAQ

六个最常被问到的。

Q:怎么装?要钱吗?
A:IDE 里 Settings → Plugins → Marketplace 搜 shijinze,点 Install,重启。 免费,不需要激活码、不需要机器码,也没有试用期。
Q:我用的不是 IDEA,能装吗?
A:能。它依赖的是 IntelliJ 平台模块,PyCharm / WebStorm / GoLand / CLion / Rider / DataGrip / RustRover / Android Studio 都行,最低 2024.2。 差别只有一个:没有 Java 插件的 IDE 里,「方法锚点」会安静退掉,书签回到纯行号。
Q:书签存在哪?会上传吗?
A:存在家目录下的 ~/bookmark_v2.db,一个普通 SQLite 文件。 没有服务端,书签内容不上传;唯一的网络动作是写记录时顺手取一次 IP 归属地当元信息。
Q:换电脑 / 重装系统,书签怎么办?
A:三条路:把 ~/bookmark_v2.db 拷过去;或者右键「导出全部书签」出 JSON, 在新机器上导入(自带判重合并);或者提前开自动备份,从备份目录拿一份副本还原。
Q:能和同事共享书签吗?
A:没有在线的团队共享——这个插件没有服务端。能做的是把书签 导出成 JSON 发给对方,对方导入即可;另外同一台机器上的两个项目可以在设置里 指向同一个项目 id,共用一份书签。
Q:IDE 升级到很新的版本,提示不兼容?
A:源码里没设兼容上限,但市场那条记录上的范围目前写到 252.*。 真遇到这种情况,可以按下面「第二条路」自己 ./gradlew buildPlugin 出一个 zip 从磁盘装。

怎么装

Install

两条路:市场直接装(推荐,三步),或者自己构建一个 zip 从磁盘装(IDE 太新、或者想改代码时走这条)。

5.0.2当前版本(= 市场最新) 免费市场定价模型 FREE 242最低 build(IDEA 2024.2) 11175Java 源码行数

路线一 · 插件市场(推荐)

打开插件市场
Settings / Preferences → Plugins → Marketplace 页签。
搜 shijinze,点 Install
搜索框里敲 shijinze 或 Bookmark-Shijinze, 认准作者是「史锦泽」的那条。装完按提示重启 IDE。
验一下装上没有
重启后看 IDE 右侧边栏是不是多了一条「史锦泽的书签」; 再在编辑器里随便找一行按 F3(或者右键看菜单第一项是不是「添加sjz书签」)。 两样都对,就装好了。

路线二 · 自己构建一个 zip 侧载

什么时候需要它:IDE 版本比市场那条记录的上限还新、公司网络连不上 Marketplace、 或者你想改两行代码自己用。仓库自带 Gradle Wrapper,不用先装 Gradle。

准备 JDK 21
构建脚本里锁的是 JVM 工具链 21,Gradle 版本 8.13 由仓库自带的 wrapper 提供, 不需要另外安装 Gradle。(注意:插件源码 README 里写的「Java 8+」是过时内容,别按那个准备环境。)
进插件目录
插件是这个仓库里的一个子项目,自己就是完整可构建的工程。 cd shijinze-bookMark-ideaPlugin
打包
产物是 zip 不是 jar(IntelliJ Platform Gradle Plugin 2.x 出的就是 zip), 落在 build/distributions/ 下,文件名带版本号。 ./gradlew buildPlugin # 产物:build/distributions/Bookmark-Shijinze-5.0.2.zip
从磁盘装进 IDE
Settings → Plugins → 右上角齿轮 → Install Plugin from Disk…, 选中刚才那个 zip,然后按提示重启 IDE。
(可选)先试用,不装进主 IDE
这条命令会开一个带插件的沙箱 IDE,玩坏了也不影响你日常在用的那个。 ./gradlew runIde
🧩 IntelliJ 平台插件 🏪 市场 id 27891 · 免费 📐 build 242 起 ☕ 自己构建需 JDK 21 🐘 Gradle 8.13(自带 wrapper) 💾 数据在 ~/bookmark_v2.db
⚠️ 别照着插件源码里的 README 和 CHANGELOG 装: README 的「系统要求 IDEA 2020.1+ / Java 8+」是很早以前的残留, 和现在的 build 242 起、JDK 21 构建对不上; CHANGELOG 整份都是 IntelliJ 官方插件模板自带的内容,没有一条是这个插件的更新记录。 以本页和 gradle.properties 为准。
📮 用着有问题、或者想提个功能:直接找我,两个都能找到人。 邮箱 sjz12875@163.com QQ 1287592384