背景

在使用 Jetbrains 系列 IDE 的时候,我很喜欢使用书签的功能,尤其是刚接触一个新的项目的时候,我会使用他标记一些关键的代码,但是,这个功能有个问题是他没法备份,甚至于我丢失了一个跟了一周多的项目的书签,很是心疼,所以就找一下保存书签的方式。

vscode

其实在使用 vscode 的时候发现有一个不错的插件:inline bookmark,他可以直接将标记直接写在代码的注释中,这样反而简单了,代码就是文档。但是这种方式也不是完美,例如这些注释提交到代码库不是很合适(或者我不能花那么多时间把这些注释写得很好),所以我就经常需要切一个 review 分支出来,用来保存这些注释,所以这就会代码脱节,没有很方便。

再来就是这个插件也只能 vscode 用,vscode 虽然有很多特性是我喜欢的,但是在写 Go 的时候其实不是很完美(可能我用的姿势不对),例如:

所以最终我还是使用 Goland 作为主力的 IDE。

保存书签

一开始使用书签功能的时候我就找了,在 IDE 的设置中是否有导出之类的配置,很遗憾没有找到。

然后在经历了一次书签丢失之后,我就去搜了一些如何保存,然后看到别人的吐槽:

好像以前 Jetbrains 的产品是有导出书签的功能,但是后面移除了,移除的理由看上去不是那么地 make sense:

Bookmarks management is a good features but there are two important notes about that:

  1. There is no much sense in providing export without import;
  2. It looks like bookmarks should be not a standalone feature but a part of common ‘task management’ functionality;

好吧,所以还是得自己动手。还在上面的吐槽中有人提到了书签是保存在 workspace 的目录下,所以,我直接抽象成了以下两个 command,这样就可以快速地备份了:

  1. [root@liqiang.io]# PROJECT_ID=$(cat .idea/workspace.xml | grep ProjectId | awk '{print $3}' | awk 'BEGIN {FS="="} {print $2}' | tr -d '"')
  2. [root@liqiang.io]# cp ~/.config/JetBrains/GoLand2022.1/workspace/$PROJECT_ID.xml bookmark-backup.xml

备忘

不同的系统默认的存储问题不同: