国庆节10月1日
--


一个 Obsidian 插件:自动识别没有语言标签的代码块并补上语言标签(python/java/c…),识别没把握的块一律跳过不填,还配了「记住上次语言」和代码块右下角的选语言按钮。

在 Obsidian 里写技术笔记,最容易被忽略的就是代码块的语言标签。很多人(包括我)写起来是这样:
1```2print("Hello")3```反引号后面空空的。后果是:代码块没有语法高亮、渲染成一片灰,复制代码块时格式也不友好——但真相往往是你只是忘了打那四个字母,并不是不想打。手动补又费劲,尤其是连续贴好几段不同语言的代码时。
这个插件就是干这件事的:自动识别代码块内容,把语言标签补上去。
打开笔记、保存、或者在编辑器里输入时,插件会自动扫描没有语言标签的代码块,识别出内容属于哪种语言,然后补上去:
1``` → ``` python2def greet(name):3 print(f"hi, {name}")4``` ```内置了 20+ 种常见语言的特征识别:Python / Java / C / C++ / C# / JavaScript / TypeScript / Go / Rust / PHP / Ruby / SQL / HTML / XML / CSS / Bash / Dockerfile / PowerShell / JSON / YAML / Markdown / Lua / Kotlin / Swift 等。
你是不是经常一段笔记里连续贴好几个同语言的代码块?插件会记住你最近一次使用的语言,新建的空代码块会自动带出来:
刚写完一个
python块,再敲一个```+回车,新代码块自动变成``` python。
自动识别毕竟是启发式的,遇到太短、太像普通文本、或者两种语言特征相近的代码,它拿不准就会跳过不填(这是它故意保守,等下说)。
这时候就该手动出场:每个没填语言的代码块右下角会有一个小小的「⌄」按钮,点一下弹出语言列表直接选。列表还做了三层排序,基本不需要翻:
所以想补一个 SQL 块,点一下,列表第一行往往就是它,回车完事,比手打快得多。
这是我最看重的一点,也是它敢自动改文件的基础:
```python 的块,动都不会动。Ctrl+Z 能逐条撤销。content/posts),目录外的笔记一个不碰。一句话:宁缺毋滥。它可能有时候漏填,但不会乱填。
启用后重载 Obsidian(Ctrl+P →「重新加载应用」),在设置 → 第三方插件里打开 Code Lang Autofill 即可。
设置项只有三个(都很直观):
| 设置 | 默认 | 说明 |
|---|---|---|
| 处理目录 | content/posts | 只处理该目录下的 md 文件;留空 = 整个库 |
| 自动补全 | 开 | 打开/保存/输入时自动补全;关闭后仅手动命令与按钮生效 |
| 新建代码块自动带出上次语言 | 开 | 新建空代码块自动填上最近一次语言 |
命令也保留了(不想走自动路径时):
市面上类似思路的插件不少,但很多是无脑填,或者检测差口气。Code Lang Autofill 把「识别」和「写入」分成了两层:
识别层是纯逻辑、连 Obsidian API 都不碰,可以脱离 UI 直接做单元测试——整套行为(解析、易混语言判别、幂等、低置信度跳过)都用测试钉死了,这也是它有底气”自动改”的原因。
如果你也经常为代码块没有语言标签而烦恼,装上试试,从此 ``` 后面的语言,基本不用自己打了。
暂未播放



"生活不是等待暴风雨过去,而是学会在雨中跳舞。"—— 塞维涅夫人


