缓存文件
优质
小牛编辑
140浏览
2023-12-01
按照一般app的设计,都是主应用,和用户目录下的缓存文件,把用户自定义的或使用生成的文件都放到缓存文件目录里。鉴于此,我们来找找code.app的缓存文件,或许能发现点有用的东西
可参照 https://code.visualstudio.com/docs/customization/userandworkspace 理解
缓存目录详情
目录是 /Users/sang/Library/Application Support/Code
Code pwd /Users/sang/Library/Application Support/Code Code tree . -L 2 . ├── DevTools Extensions ├── File System │ ├── 000 │ └── Origins ├── GPUCache │ ├── data_0 │ ├── data_1 │ ├── data_2 │ ├── data_3 │ └── index ├── Local Storage │ ├── chrome-devtools_devtools_0.localstorage │ ├── chrome-devtools_devtools_0.localstorage-journal │ ├── file__0.localstorage │ └── file__0.localstorage-journal ├── QuotaManager ├── QuotaManager-journal ├── User │ ├── keybindings.json │ ├── launch.json │ └── snippets ├── databases │ ├── Databases.db │ └── Databases.db-journal └── storage.json 8 directories, 17 files
这些文件我们能看懂的就尽量看,看不懂的也无所谓,如果想深度了解里面的机制,还是有必要看看的。
storage.json
storage.json是code.app的核心配置文件,就像npm里的package.json一样。
看一下具体内容
Code cat storage.json { "updateChannel": "stable", "windowUIState": { "width": 1280, "height": 773, "mode": 1, "x": 0, "y": 23 }, "openedPathsList": { "folders": [], "files": [ "/Users/sang/Library/Application Support/Code/User/snippets/javascript.json", "/Users/sang/workspace/github/vsc-doc/typings/node/node.d.ts", "/Users/sang/workspace/github/vsc-doc", "/Users/sang/workspace/github/vsc/index.js", "/Users/sang/workspace/moa/rate-cache", "/Users/sang/workspace/aircos/aircos-plugins", "/Users/sang/workspace/github/vsc", "/Users/sang/test/go", "/Users/sang/test/go/views" ] }, "theme": "vs", "folderPickerWorkingDir": "/Users/sang/workspace/moa", "lastActiveOpenedPath": "/Users/sang/workspace/github/vsc-doc" }%
说明
- updateChannel 应该检查版本更新的设置
- windowUIState 界面状态,还记得分割编辑窗口吧?
- openedPathsList 应该是File -> Open Recent里的内容
- theme 用户配色方案
- folderPickerWorkingDir 执行command + o 打开的目录
- lastActiveOpenedPath 最后打开的目录(这个目录是我执行vsc直接打开的)
为什么要了解它呢?
如果你理解了上面的配置起什么作用,那么你是不是可以干很多坏事儿呢?比如
- 备份
- 可视化
- 其他hack
剩下的自己发挥吧
当前用户配置
上面的目录结构基本都可以看懂,对应当前用户来说
├── User │ ├── keybindings.json(用户自定义的快捷键) │ ├── launch.json(调试加载的文件) │ └── snippets
用户快捷键
比如快捷键
Code cat User/keybindings.json // Place your key bindings in this file to overwrite the defaults [ { "key": "ctrl+f12", "command": "editor.action.goToDeclaration", "when": "editorTextFocus" }, { "key": "shift+space", "command": "editor.action.triggerSuggest", "when": "editorTextFocus" } ]%
是不是和我们之前配置的一样?
用户调试加载的文件
User/launch.json
和上面的是一样的,就不打印了。如果想每次都定义一下的话,可以自己修改,以后对当前用户就是全局的了
snippets
User/snippets是snippets存放位置,比如javascript的定义
见
User/snippets/javascript.json
snippets中文是代码片段,是自定义智能提示用的
自定义snippet
// Place your snippets for JavaScript here. Each snippet is defined under a snippet name and has a prefix, body and // description. The prefix is what is used to trigger the snippet and the body will be expanded and inserted. Possible variables are: // $1, $2 for tab stops, ${id} and ${id:label} and ${1:label} for variables. Variables with the same id are connected. // Example: "Print to console": { "prefix": "log", "body": [ "console.log('$1');", "$2" ], "description": "Log output to console" }
说明:
- “Print to console” 是智能提示显示的
- “prefix” 是用户输入的字母,比如本例中输入log自动提示
- 当用户触发此snippet的时候,会按照"body"里代码生成
- $1代表光标位置
自己按照上面的方法定义自己的snippets,可以提高很多工作效率哦
下面看一下如何在代码中使用snippet,如图
和vim、nodepad++里的录制宏类似
另外editor.snippetSuggestions默认是bottom,可以改成top
"editor.snippetSuggestions": "top"