编程语言纯文本高亮——v2.4 起给代码文件加独立颜色主题
为什么在文本编辑器里做代码高亮
Markor 的设计理念是「纯文本瑞士军刀」——而代码文件(.py, .java, .js, .c 等)也是纯文本。所以给代码文件加语法高亮,对 Markor 来说是水到渠成的事。
v2.4 起 Markor 引入了一个关键的架构变化:所有格式的语法高亮器统一成一套组件——MarkdownHighlighter、ZimWIKIHighlighter、AsciiDocHighlighter 等都是从同一个基类继承。这样要加一个新格式(比如某种编程语言),只需要实现对应的高亮规则就行。
支持哪些编程语言
截至 v2.11,Markor 的编程语言高亮覆盖了:
| 分类 | 语言 |
|---|---|
| 系统语言 | C、C++、C#、Java、Kotlin |
| 脚本语言 | Python、Ruby、Perl、Lua、Shell (Bash) |
| 前端 | JavaScript、TypeScript、HTML、CSS、Vue |
| 数据格式 | JSON、YAML、TOML、INI、XML |
| 其他 | PHP、Go、Rust、SQL |
新增语言持续进行中,社区 PR 贡献很活跃。
高亮效果
编辑器模式下,代码文件的高亮覆盖:
- 关键字(
ifelsereturnclassdef) - 字符串(单引号、双引号、原始字符串)
- 注释(单行
#//--和多行/* */""" """) - 数字(整数、浮点、十六进制、二进制)
- 函数名
- 运算符
Markor 用的是和 Markdown 相同的主题色板——所以同一个编辑器里,Markdown 标题和 Python def 函数定义会用类似的视觉权重(粗体 + 主题色),保持整体一致感。
为什么 Markor 不做 IDE
Markor 的开发者明确表态过:Markor 是编辑器,不是 IDE。所以它 不做:
- ❌ 自动补全(需要 LSP / 语言服务器,手机上性能不够)
- ❌ 实时错误检查(需要构建环境)
- ❌ 跳转定义(需要完整符号索引)
- ❌ 调试(需要调试器)
- ❌ Git 集成(需要 Git 客户端)
Markor 在代码场景下的定位是:阅读 + 轻量编辑。比如:
- 地铁上看一段别人发来的 Python 脚本,语法高亮让结构一目了然
- 收到服务器上的 Shell 脚本截图,想在手机里改几行重新发回去
- 写个 Markdown + 代码块组合的笔记,代码块自动按语言高亮
v2.1 的 Key-Value 高亮
v2.1 新增的 Key-Value 高亮专门针对 JSON、YAML、INI、CSV 这类 键值对格式:
{
"name": "Markor", ← key 用颜色 A
"version": "2.15.0", ← key 用颜色 A,value 用颜色 B
"permissions": [ ← key 用颜色 A
"STORAGE",
"INTERNET" ← value 用颜色 B
]
}
INI 文件:
[section] ← section 标头用颜色 C
key=value ← key 颜色 A,value 颜色 B
YAML 文件:
name: Markor ← key 颜色 A,value 颜色 B
version: 2.15.0
这个功能让配置文件在手机上比 Excel 表格还清晰——哪部分是 section 标头、哪部分是配置项名、哪部分是值,一眼就能分辨。
文件类型自动识别
Markor 自动识别文件类型的优先级:
- 显式格式选择:底部操作栏手动切到某种格式
- 扩展名:
.py→ Python,.java→ Java,.js→ JavaScript - 内容检测:扩展名是
.txt但内容里有#!/bin/bash→ 自动识别为 Shell - 兜底:Plaintext(无高亮)
如果扩展名是 .txt 但你希望 Markor 按 Python 语法高亮打开,手动切一下格式即可。
和 Markdown 代码块的关系
当你在 Markdown 里写:
def hello(): print("Hello World")
Markor 的 Markdown 高亮器会在 代码块内部 自动套用 Python 语法高亮——所以整段 Markdown 里:
- 外面的 Markdown 语法(围栏 ```)用 Markdown 高亮样式
- 里面的 Python 代码用 Python 高亮样式
- 两者无缝衔接
这是一个很贴心的小细节——在其他 Markdown 编辑器里,代码块内部的高亮常常被简化或忽略。
代码场景下的同步
纯文本代码文件和 Markdown 笔记文件在 Syncthing 等同步客户端里 完全同等对待:
.py/.java/.js直接同步- 桌面端 IDE 打开 → 完整语法高亮 + 自动补全
- 手机端 Markor 打开 → Markor 自己的语法高亮 + 纯文本编辑
代码修改后两边的冲突合并和纯文本文件一样——按行合并。