Android 应有的代码编辑器:LSP、IntelliSense 及更多
一款真正的 Android 代码编辑器:LSP 语言服务器、语义化自动补全、TextMate 语法高亮、多光标编辑、代码导航与内联诊断——全部在你的手机上完成。
Android 上大多数所谓的"代码编辑器",不过是包装华丽的文本框。它们依赖 Android 的
TextView,打开一个 2000 行的文件就卡顿,拿不出任何能让真正的开发者敢用它写生产代码的
东西。运气好的话你能有点语法着色,仅此而已。于是每当需要临时改一个 bug,你还是得去掏
笔记本电脑。
PocketCode 走的是完全相反的路线。它的 Android 代码编辑器构建在
Sora Editor 之上——这是一个由 gap-buffer 数据结构支撑的高性能引擎。与基于
TextView 的方案不同,Sora 在每次按键时避免了 O(n) 复制,因此大文件依然流畅。在这个引擎
之上,PocketCode 叠加了你在桌面 IDE 中期待的一切:LSP 语言服务器、语义化
自动补全、真正的语法高亮、多光标编辑,以及深度代码导航。下面就来看看它实际
是什么样子。你也可以直接查看
代码编辑器功能页面进一步了解。
不是玩具级别的语法高亮
高亮由 TextMate 语法规则驱动(与 VS Code 使用的 .tmLanguage.json 格式相同),
经由 tm4e 引擎处理。开箱即用覆盖 33 种语言——Kotlin、Java、Python、JavaScript、
TypeScript(以及 TSX)、Go、Rust、C、C++、C#、PHP、Ruby、Swift、Scala、SQL、YAML、
TOML、Dockerfile 等等——每一种都映射到其正确的 TextMate scope 与文件扩展名。
为了让编辑器在手机上保持响应流畅,PocketCode 自带了一套
IncrementalTokenizer,可以立即绘制 token,而不必等待完整的 TextMate 解析结束。围绕它,
你还能获得让代码更易读的编辑器基础能力:可配置的行号、匹配的花括号与圆括号指示、可视化
缩进参考线,以及对函数、类、方法、接口、注释块、导入块和自定义区域的代码折叠——支持嵌套
折叠,且折叠状态按文件持久保存。
语言检测是自动的,可按扩展名(CodeLanguage.fromExtension())或按文件名
(CodeLanguage.fromFileName(),能识别 Dockerfile、Makefile、.gitignore
之类),无匹配时回退为纯文本。
由 LSP 驱动的自动补全与 IntelliSense
正是从这里开始,PocketCode 不再是一个移动端玩具,而成为一款真正的 IDE。编辑器内置了完整
的 Language Server Protocol 客户端——LspClient,实现了 LSP 3.17——可连接
到标准的外部语言服务器(clangd、pyright 等)。通信基于 JSON-RPC 2.0,具备完整的语言
服务器生命周期管理,服务器断开时可自动重连。
正是这个 LSP 客户端把基础补全变成了真正的 IntelliSense。它实现了以下八项能力:
| LSP 方法 | 功能 |
|---|---|
textDocument/completion | 语义化自动补全 |
textDocument/hover | 悬停显示文档 |
textDocument/definition | 跳转到定义 |
textDocument/references | 查找引用 |
textDocument/signatureHelp | 函数参数提示 |
textDocument/formatting | 服务器辅助格式化 |
textDocument/rename | 安全的语义化重命名 |
textDocument/publishDiagnostics | 实时的服务器诊断 |
Sora 引擎本身也提供了原生的浮动自动补全窗口,因此在你尚未接入语言服务器之前就能获得 补全。而对于 AI 辅助写作,一个 Ghost Text 图层会在光标之后以半透明内联文本渲染建议, 并设有 150 毫秒的缓冲窗口,避免轻微的光标移动就把它关掉——接受建议会插入完整文本,同时保留 你的撤销/重做历史,而且它绝不会与标准的自动补全引擎冲突。想深入了解,可参阅 编辑器文档。
编辑能力:多光标、Emmet 与符号键盘
只有当编辑器让你痛苦时,在手机上敲代码才会痛苦。PocketCode 的
MultiCursorEngine 让你在任意位置放置额外的光标并同时编辑每一个,配以清晰的
偏移量 ↔ 行/列转换,还能在保留其余光标的同时移除单个光标。
Emmet 对 HTML 和 CSS 提供完整支持:ul>li*3 展开为嵌套列表,div.cls#id 变成
<div id="id" class="cls"></div>,而像 df → display: flex 或 w100p →
width: 100% 这样的 CSS 简写也都能用。
由于手机键盘并非为写代码而设计,系统键盘之上还有一条编程符号栏。其中一个区块插入你真正
需要的字符——{ } [ ] ( ) ; : = 等等——另一个区块则暴露各类操作:
撤销/重做、上下移动一行、切换行注释(//)或块注释(/* */)、复制当前行、跳转到某行、
对选中行排序、以及大小写转换(大写 / 小写 / 首字母大写)。再加上双指缩放字号、长按时的
放大镜以便精确定位光标,以及无限制的撤销/重做,小屏幕就不再是借口了。
像模像样地在代码中穿行
一个真正的编辑器,要看你在代码库里穿行的速度。PocketCode 给了你完整的导航工具箱:
- 转到符号——对当前文件的模糊过滤对话框,涵盖函数、方法、类、接口、属性、变量、常量、 导入和区域,每一项都带有一行上下文。
- 大纲面板——一个可滑出的文件结构树,随你的编辑实时更新。
- 快速查看定义——一个内联弹窗,显示某符号定义周围约 10 行的上下文,无需移动光标。
- 转到引用——项目中的每一处引用,从视觉上区分定义与使用。
- 重命名符号——在整个项目范围内查找所有出现处,将代码与字符串/注释区分开,并在应用前 显示预览。
- 全局搜索——对所有项目文件进行文本或正则表达式搜索,可按扩展名过滤,绑定到
Ctrl+Shift+F。 - 命令面板——一个 VS Code 风格的模糊入口,可触达每一项编辑器操作。
- 自动导入——扫描未定义的符号,并为 Kotlin、Java、Python、TypeScript、JavaScript 等语言推荐正确的导入。
无需服务器的诊断
你并不总想启动一个语言服务器,因此 PocketCode 内置了一个本地的
InlineDiagnostics 引擎,使用按语言划分的规则实时捕捉问题——无需 LSP。它携带了
针对 Kotlin、Java、JavaScript/TypeScript、Python、Go、Rust、PHP、CSS、HTML 和 JSON
的规则。
通用规则会标记行尾空白、过多的连续空行,以及 TODO / FIXME / HACK / NOTE /
BUG / WARN 注释。特定语言的规则则更进一步——Kotlin 的 !! 用法、JavaScript 中用
== 而非 === 或用 var 而非 let/const、Python 缩进不一致与未使用的导入、格式
错误的 JSON。一切都会在 VS Code 风格的问题面板中呈现,按文件分组,并可按严重程度
(ERROR、WARNING、INFO、HINT)过滤。
在力所能及之处,编辑器会替你把问题修好。快速修复会出现在诊断旁边——清理行尾空白、移除 空行,以及应用特定语言的操作。而提取重构会分析选区中的变量,从中抽取一个方法(带上正确 的参数与调用点),或把一个表达式包装为一个具名变量,并自动缩进到正确层级。
就在设备上完成的格式化
格式化完全在设备本地进行——无需外部工具,无需网络往返。每种语言都有各自的格式化器实现:
| 格式化器 | 语言 |
|---|---|
| C 风格 | Kotlin、Java、JS、TS、C、C++、C#、Dart、Go、Swift、Rust、PHP、Scala、Gradle |
| Python | Python(PEP-8 缩进) |
| XML/HTML | HTML、XML、SVG |
| JSON | JSON(美化打印或紧凑) |
| CSS | CSS、SCSS、Less |
| YAML / SQL / Markdown | YAML、SQL、Markdown |
按配置文件划分的选项让你可以设置缩进大小、最大行宽、是否添加行尾换行、运算符周围的空格,以及 花括号的摆放位置。
为手机而生,而非移植而来
布局会在手机竖屏、手机横屏、平板和折叠屏等形态之间自动适配。禅模式会隐藏文本之外的一切, 分屏编辑器让两个文件并排显示,而上下文相关的工具栏 chip 让格式化、查找、替换和大纲都触手 可及。几乎每一项操作都归置在一个井井有条的溢出菜单里,还有离线模式,让编辑、本地执行与 Git 在无网络时依然可用。
坦诚说一句:实时协作在路线图上,但尚未上线。协作面板作为一个没有后端的 UI 原型存在——光标 同步与共享会话仍在规划中,所以我们不会假装它们今天就能用。
手机不再是用更差的工具写代码的借口。PocketCode 的编辑器把真正重要的部分——LSP 支持的自动 补全与 IntelliSense、覆盖 33 种语言的 TextMate 语法高亮、多光标编辑,以及完整的代码 导航——带到了那台永远在你口袋里的设备上。想了解各版本能力,也可以看看 定价页面。
Android 代码编辑器:快速解答
Android 上有好用的代码编辑器吗? 有——PocketCode 把 LSP 自动补全、覆盖 33 种语言的 高亮、多光标编辑和内置 Git 都带到了手机上。
没有电脑也能在 Android 上写代码吗? 可以——只用手机就能编写、运行和调试,全程离线。
有带终端的代码编辑器吗? 有——编辑器紧挨着一个内置终端(SSH/SFTP)和设备端运行器, 因此你在同一个应用里编辑并运行。
它有 Git 吗? 内置:提交、差异对比、blame、分支——无需外部客户端。
免费且无广告吗? 完整的编辑器免费,没有广告。
能离线用吗? 完全可以——编辑器、运行时和 Git 都能在无网络连接的情况下工作。
PocketCode 即将登陆 Google Play。加入预注册,抢先在你自己的 设备上体验它。
代码编辑器